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.7 6.6
Change-Id: I9aac295c824ad774410efd679f59075e4251b611
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
bb10
Ghenady Kuznetsov 2024-02-02 14:44:42 +02:00
parent 2b8a604c40
commit 3aa9388056
1 changed files with 5 additions and 3 deletions

View File

@ -3330,11 +3330,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;
@ -3364,10 +3365,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;
}