Make text in fancy tabbar wrap if too wide

This commit is contained in:
Jonas Kvinge 2020-07-01 02:53:18 +02:00
parent abcd184d5d
commit 227b14a0b6
1 changed files with 4 additions and 2 deletions

View File

@ -38,6 +38,7 @@
#include <QColor>
#include <QRect>
#include <QFont>
#include <QFontMetrics>
#include <QSize>
#include <QPoint>
#include <QBrush>
@ -100,7 +101,8 @@ class FancyTabBar: public QTabBar {
QSize size;
if (tabWidget->mode() == FancyTabWidget::Mode_LargeSidebar) {
size = QSize(std::max(FancyTabWidget::TabSize_LargeSidebarWidth, tabWidget->iconsize_largesidebar() + 22), tabWidget->iconsize_largesidebar() + 24);
QFontMetrics fm(font());
size = QSize(std::max(FancyTabWidget::TabSize_LargeSidebarWidth, tabWidget->iconsize_largesidebar() + 22), tabWidget->iconsize_largesidebar() + fm.boundingRect(QRect(0, 0, std::max(FancyTabWidget::TabSize_LargeSidebarWidth, tabWidget->iconsize_largesidebar() + 22), height()), Qt::TextWordWrap, QTabBar::tabText(index)).height() + 6);
}
else {
size = QTabBar::tabSizeHint(index);
@ -246,7 +248,7 @@ class FancyTabBar: public QTabBar {
}
else {
m = QTransform::fromTranslate(tabrect.left(), tabrect.top());
textFlags = Qt::AlignHCenter | Qt::AlignBottom;
textFlags = Qt::AlignHCenter | Qt::AlignBottom | Qt::TextWordWrap;
iconFlags = Qt::AlignHCenter | Qt::AlignTop;
tabrectLabel = QRect(QPoint(0, 0), m.mapRect(tabrect).size());