diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2020-12-08 21:23:48 +0100 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2020-12-10 19:40:57 +0100 |
commit | 6fa1038a85f8e0da7c91b510cf01fe1bbcf37c0f (patch) | |
tree | c0ec81582fd1d4f0fec7ae598babb9a6ae44bbee /src | |
parent | ac1008c16f58d95ae4ff0a7864e3bcb0783cc439 (diff) |
QHeaderView: respect the font role while calculating the elided text
Amends 4d943846128118e1b9932a17ce6f977a0f4127a5:
- The macOS style must now elide the text by it's own since it is
no longer done by QHeaderView
- Add documentation of QStyleOptionHeader::textElideMode
- Remove unused variables from QHeaderView::initStyleOptionForIndex()
Task-number: QTBUG-86426
Change-Id: I98fc6771c0cd56d6002390125ffbab1269f6dd39
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/styles/mac/qmacstyle_mac.mm | 5 | ||||
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 10 | ||||
-rw-r--r-- | src/widgets/styles/qstyleoption.cpp | 10 |
3 files changed, 14 insertions, 11 deletions
diff --git a/src/plugins/styles/mac/qmacstyle_mac.mm b/src/plugins/styles/mac/qmacstyle_mac.mm index 152d51da1a..e6939a0fda 100644 --- a/src/plugins/styles/mac/qmacstyle_mac.mm +++ b/src/plugins/styles/mac/qmacstyle_mac.mm @@ -3520,9 +3520,12 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter proxy()->drawItemPixmap(p, pixr, Qt::AlignVCenter, pixmap); textr.translate(pixmap.width() / pixmap.devicePixelRatio() + 2, 0); } + QString text = header->text; + if (header->textElideMode != Qt::ElideNone) + text = header->fontMetrics.elidedText(text, header->textElideMode, textr.width()); proxy()->drawItemText(p, textr, header->textAlignment | Qt::AlignVCenter, header->palette, - header->state & State_Enabled, header->text, QPalette::ButtonText); + header->state.testFlag(State_Enabled), text, QPalette::ButtonText); p->restore(); } break; diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index d6c9700ed3..1ddcad8fd0 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -2936,21 +2936,11 @@ void QHeaderView::initStyleOptionForIndex(QStyleOptionHeader *option, int logica opt.text = d->model->headerData(logicalIndex, d->orientation, Qt::DisplayRole).toString(); - int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, nullptr, this); - - const Qt::Alignment headerArrowAlignment = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_Header_ArrowAlignment, nullptr, this)); - const bool isHeaderArrowOnTheSide = headerArrowAlignment & Qt::AlignVCenter; - if (isSortIndicatorShown() && sortIndicatorSection() == logicalIndex && isHeaderArrowOnTheSide) - margin += style()->pixelMetric(QStyle::PM_HeaderMarkSize, nullptr, this); - const QVariant variant = d->model->headerData(logicalIndex, d->orientation, Qt::DecorationRole); opt.icon = qvariant_cast<QIcon>(variant); if (opt.icon.isNull()) opt.icon = qvariant_cast<QPixmap>(variant); - if (!opt.icon.isNull()) // see CT_HeaderSection - margin += style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this) + - style()->pixelMetric(QStyle::PM_HeaderMargin, nullptr, this); QVariant var = d->model->headerData(logicalIndex, d->orientation, Qt::FontRole); diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp index 5bb5cca8b8..f4e5cba5e5 100644 --- a/src/widgets/styles/qstyleoption.cpp +++ b/src/widgets/styles/qstyleoption.cpp @@ -895,6 +895,16 @@ QStyleOptionHeader::QStyleOptionHeader(int version) */ /*! + \variable QStyleOptionHeader::textElideMode + \brief where ellipsis should be added for text that is too long to fit + into an item + + The default value is Qt::ElideNone. + + \sa Qt::TextElideMode +*/ + +/*! \class QStyleOptionButton \brief The QStyleOptionButton class is used to describe the parameters for drawing buttons. |