34 Preferred = GrowFlag | ShrinkFlag,
35 MinimumExpanding = GrowFlag | ExpandFlag,
36 Expanding = GrowFlag | ShrinkFlag | ExpandFlag,
37 Ignored = ShrinkFlag | GrowFlag | IgnoreFlag
42 DefaultType = 0x00000001,
43 ButtonBox = 0x00000002,
44 CheckBox = 0x00000004,
45 ComboBox = 0x00000008,
47 GroupBox = 0x00000020,
50 LineEdit = 0x00000100,
51 PushButton = 0x00000200,
52 RadioButton = 0x00000400,
55 TabWidget = 0x00002000,
56 ToolButton = 0x00004000
58 Q_DECLARE_FLAGS(ControlTypes, ControlType)
61 constexpr QSizePolicy()
noexcept : data(0) { }
63 constexpr QSizePolicy(Policy horizontal, Policy vertical, ControlType type = DefaultType)
noexcept
64 : bits{0, 0, quint32(horizontal), quint32(vertical),
65 type == DefaultType ? 0 : toControlTypeFieldValue(type), 0, 0, 0}
67 constexpr Policy horizontalPolicy()
const noexcept {
return static_cast<Policy>(bits.horPolicy); }
68 constexpr Policy verticalPolicy()
const noexcept {
return static_cast<Policy>(bits.verPolicy); }
69 ControlType controlType()
const noexcept;
71 constexpr void setHorizontalPolicy(Policy d)
noexcept { bits.horPolicy = d; }
72 constexpr void setVerticalPolicy(Policy d)
noexcept { bits.verPolicy = d; }
73 void setControlType(ControlType type)
noexcept;
76 constexpr Qt::Orientations expandingDirections()
const noexcept {
77 return ( (verticalPolicy() &
static_cast<Policy>(ExpandFlag)) ? Qt::Vertical : Qt::Orientations() )
78 | ( (horizontalPolicy() &
static_cast<Policy>(ExpandFlag)) ? Qt::Horizontal : Qt::Orientations() ) ;
81 constexpr void setHeightForWidth(
bool b)
noexcept { bits.hfw = b; }
82 constexpr bool hasHeightForWidth()
const noexcept {
return bits.hfw; }
83 constexpr void setWidthForHeight(
bool b)
noexcept { bits.wfh = b; }
84 constexpr bool hasWidthForHeight()
const noexcept {
return bits.wfh; }
86 constexpr bool operator==(
const QSizePolicy& s)
const noexcept {
return data == s.data; }
87 constexpr bool operator!=(
const QSizePolicy& s)
const noexcept {
return data != s.data; }
89 friend Q_DECL_CONST_FUNCTION size_t qHash(QSizePolicy key, size_t seed = 0)
noexcept {
return qHash(key.data, seed); }
91 operator QVariant()
const;
93 constexpr int horizontalStretch()
const noexcept {
return static_cast<
int>(bits.horStretch); }
94 constexpr int verticalStretch()
const noexcept {
return static_cast<
int>(bits.verStretch); }
95 constexpr void setHorizontalStretch(
int stretchFactor) { bits.horStretch =
static_cast<quint32>(qBound(0, stretchFactor, 255)); }
96 constexpr void setVerticalStretch(
int stretchFactor) { bits.verStretch =
static_cast<quint32>(qBound(0, stretchFactor, 255)); }
98 constexpr bool retainSizeWhenHidden()
const noexcept {
return bits.retainSizeWhenHidden; }
99 constexpr void setRetainSizeWhenHidden(
bool retainSize)
noexcept { bits.retainSizeWhenHidden = retainSize; }
101 constexpr void transpose()
noexcept { *
this = transposed(); }
102 [[nodiscard]]
constexpr QSizePolicy transposed()
const noexcept
104 return QSizePolicy(bits.transposed());
108#ifndef QT_NO_DATASTREAM
109 friend Q_WIDGETS_EXPORT QDataStream &operator<<(QDataStream &,
const QSizePolicy &);
110 friend Q_WIDGETS_EXPORT QDataStream &operator>>(QDataStream &, QSizePolicy &);
112 constexpr QSizePolicy(
int i)
noexcept : data(i) { }
114 constexpr explicit QSizePolicy(Bits b)
noexcept : bits(b) { }
116 static constexpr quint32 toControlTypeFieldValue(ControlType type)
noexcept
119
120
121
122
123
124
125
126
127
128
129
130
132 return qCountTrailingZeroBits(
static_cast<quint32>(type));
136 quint32 horStretch : 8;
137 quint32 verStretch : 8;
138 quint32 horPolicy : 4;
139 quint32 verPolicy : 4;
143 quint32 retainSizeWhenHidden : 1;
145 constexpr Bits transposed()
const noexcept
154 retainSizeWhenHidden};
166Q_DECLARE_MIXED_ENUM_OPERATORS(
int, QSizePolicy::Policy, QSizePolicy::PolicyFlag)