From 4f43990f7d741fdfc346023101a4b42f3dfdfb40 Mon Sep 17 00:00:00 2001 From: GHENADY Date: Sat, 23 Dec 2023 19:51:43 +0200 Subject: [PATCH] Fusion style: QGroupBox title vertical alignment Take vertical alignment into account in QFusionStyle::subControlRect(). Fixes: QTBUG-67708 Change-Id: I9da23a4689565c8dba9fed9ef75d3c640ce77e3f Reviewed-by: Christian Ehrlicher (cherry picked from commit 2e625c55b346a727b39b8c5cddc37839b49ba5a0) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit 8b567e90be95ae21d3814653742e68099dc20349) --- src/widgets/styles/qfusionstyle.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index 01c5919593f..c0924e22e94 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -3392,17 +3392,21 @@ QRect QFusionStyle::subControlRect(ComplexControl control, const QStyleOptionCom #endif // QT_CONFIG(spinbox) case CC_GroupBox: if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast(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;