Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qquickstyleitemgroupbox.cpp
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
6
8
9QFont QQuickStyleItemGroupBox::styleFont(QQuickItem *control) const
10{
11 return style()->font(QStyle::CE_HeaderLabel, controlSize(control));
12}
13
14StyleItemGeometry QQuickStyleItemGroupBox::calculateGeometry()
15{
16 QStyleOptionGroupBox styleOption;
17 initStyleOption(styleOption);
18
19 StyleItemGeometry geometry;
20 geometry.minimumSize = style()->sizeFromContents(QStyle::CT_GroupBox, &styleOption, QSize(0, 0));
21
22 if (!control<QQuickGroupBox>()->title().isEmpty()) {
23 // We don't draw the title, but we need to take
24 // it into calculation for the control size
25 styleOption.text = QStringLiteral(" ");
26 styleOption.subControls |= QStyle::SC_GroupBoxLabel;
27 }
28
29 geometry.implicitSize = style()->sizeFromContents(QStyle::CT_GroupBox, &styleOption, contentSize());
30 styleOption.rect.setSize(geometry.implicitSize);
31 geometry.contentRect = style()->subControlRect(QStyle::CC_GroupBox, &styleOption, QStyle::SC_GroupBoxContents);
32 geometry.layoutRect = style()->subElementRect(QStyle::SE_GroupBoxLayoutItem, &styleOption);
33 geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CC_GroupBox, &styleOption, geometry.minimumSize);
34
35 const QQuickStyleMargins oldGroupBoxPadding = m_groupBoxPadding;
36 const QRect frame = style()->subControlRect(QStyle::CC_GroupBox, &styleOption, QStyle::SC_GroupBoxFrame);
37 m_groupBoxPadding = QQuickStyleMargins(QRect(QPoint(), geometry.implicitSize), frame);
38 if (m_groupBoxPadding != oldGroupBoxPadding)
39 emit groupBoxPaddingChanged();
40
41 const QPointF oldLabelPos = m_labelPos;
42 m_labelPos = style()->subControlRect(QStyle::CC_GroupBox, &styleOption, QStyle::SC_GroupBoxLabel).topLeft();
43 if (m_labelPos != oldLabelPos)
44 emit labelPosChanged();
45 return geometry;
46}
47
48void QQuickStyleItemGroupBox::paintEvent(QPainter *painter) const
49{
50 QStyleOptionGroupBox styleOption;
51 initStyleOption(styleOption);
52 style()->drawComplexControl(QStyle::CC_GroupBox, &styleOption, painter);
53}
54
55void QQuickStyleItemGroupBox::initStyleOption(QStyleOptionGroupBox &styleOption) const
56{
57 initStyleOptionBase(styleOption);
58 styleOption.subControls = QStyle::SC_GroupBoxFrame;
59 styleOption.lineWidth = 1;
60}
61
62QQuickStyleMargins QQuickStyleItemGroupBox::groupBoxPadding() const
63{
64 return m_groupBoxPadding;
65}
66
67QPointF QQuickStyleItemGroupBox::labelPos() const
68{
69 return m_labelPos;
70}
71
72QT_END_NAMESPACE
73
74#include "moc_qquickstyleitemgroupbox.cpp"