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 <ch.ehrlicher@gmx.de>
(cherry picked from commit 3aa9388056f56b65b33cd2929a690584e21a02b2)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Ghenady Kuznetsov 2024-02-02 14:44:42 +02:00 committed by Qt Cherry-pick Bot
parent e64861d416
commit 43de61139e

View File

@ -3328,11 +3328,12 @@ QRect QFusionStyle::subControlRect(ComplexControl control, const QStyleOptionCom
case CC_GroupBox:
if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(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;
}