Fusion style: QGroupBox title vertical alignment

Take vertical alignment into account in QFusionStyle::subControlRect().

Fixes: QTBUG-67708
Change-Id: I9da23a4689565c8dba9fed9ef75d3c640ce77e3f
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
(cherry picked from commit 2e625c55b346a727b39b8c5cddc37839b49ba5a0)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 8b567e90be95ae21d3814653742e68099dc20349)
This commit is contained in:
GHENADY 2023-12-23 19:51:43 +02:00 committed by Qt Cherry-pick Bot
parent c745ed94a4
commit 4f43990f7d

View File

@ -3392,17 +3392,21 @@ QRect QFusionStyle::subControlRect(ComplexControl control, const QStyleOptionCom
#endif // QT_CONFIG(spinbox)
case CC_GroupBox:
if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(option)) {
const int groupBoxTextAlignment = groupBox->textAlignment;
const int fontMetricsHeight = groupBox->text.isEmpty() ? 0 : groupBox->fontMetrics.height();
rect = option->rect;
if (subControl == SC_GroupBoxFrame)
return rect.adjusted(0, 0, 0, 0);
if ((groupBoxTextAlignment & Qt::AlignVertical_Mask) == Qt::AlignVCenter)
return rect.adjusted(0, -(fontMetricsHeight + 4) / 2, 0, 0);
else
return rect;
else if (subControl == SC_GroupBoxContents) {
QRect frameRect = option->rect.adjusted(0, 0, 0, -groupBoxBottomMargin);
int margin = 3;
int leftMarginExtension = 0;
const int exclusiveIndicatorHeight = option->subControls.testFlag(SC_GroupBoxCheckBox) ?
pixelMetric(PM_ExclusiveIndicatorHeight) : 0;
const int fontMetricsHeight = groupBox->text.isEmpty() ? 0 :
groupBox->fontMetrics.height();
const int topMargin = qMax(exclusiveIndicatorHeight, fontMetricsHeight) +
groupBoxTopMargin;
return frameRect.adjusted(leftMarginExtension + margin, margin + topMargin, -margin, -margin - groupBoxBottomMargin);
@ -3418,7 +3422,7 @@ QRect QFusionStyle::subControlRect(ComplexControl control, const QStyleOptionCom
rect = QRect();
if (option->rect.width() > width) {
switch (groupBox->textAlignment & Qt::AlignHorizontal_Mask) {
switch (groupBoxTextAlignment & Qt::AlignHorizontal_Mask) {
case Qt::AlignHCenter:
rect.moveLeft((option->rect.width() - width) / 2);
break;