From 43de61139e0eba9a2c66ec993f3ead3e41dbe5f6 Mon Sep 17 00:00:00 2001 From: Ghenady Kuznetsov Date: Fri, 2 Feb 2024 14:44:42 +0200 Subject: [PATCH] Fusion style: add right side indent to groupbox title Add right side indent to the title if groupbox alignment is set to Qt::AlignRight | Qt::AlignVCenter. Fixes: QTBUG-121049 Pick-to: 6.6 Change-Id: I9aac295c824ad774410efd679f59075e4251b611 Reviewed-by: Christian Ehrlicher (cherry picked from commit 3aa9388056f56b65b33cd2929a690584e21a02b2) Reviewed-by: Qt Cherry-pick Bot --- src/widgets/styles/qfusionstyle.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index 0cc1490f99a..15ea72a1243 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -3328,11 +3328,12 @@ QRect QFusionStyle::subControlRect(ComplexControl control, const QStyleOptionCom case CC_GroupBox: if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast(option)) { const int groupBoxTextAlignment = groupBox->textAlignment; + const bool hasVerticalAlignment = (groupBoxTextAlignment & Qt::AlignVertical_Mask) == Qt::AlignVCenter; const int fontMetricsHeight = groupBox->text.isEmpty() ? 0 : groupBox->fontMetrics.height(); rect = option->rect; if (subControl == SC_GroupBoxFrame) - if ((groupBoxTextAlignment & Qt::AlignVertical_Mask) == Qt::AlignVCenter) + if (hasVerticalAlignment) return rect.adjusted(0, -(fontMetricsHeight + 4) / 2, 0, 0); else return rect; @@ -3362,10 +3363,11 @@ QRect QFusionStyle::subControlRect(ComplexControl control, const QStyleOptionCom rect.moveLeft((option->rect.width() - width) / 2); break; case Qt::AlignRight: - rect.moveLeft(option->rect.width() - width); + rect.moveLeft(option->rect.width() - width + - (hasVerticalAlignment ? proxy()->pixelMetric(PM_LayoutRightMargin, groupBox, widget) : 0)); break; case Qt::AlignLeft: - if ((groupBoxTextAlignment & Qt::AlignVertical_Mask) == Qt::AlignVCenter) + if (hasVerticalAlignment) rect.moveLeft(proxy()->pixelMetric(PM_LayoutLeftMargin, option, widget)); break; }