Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qlayoutpolicy_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 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
4#ifndef QLAYOUTPOLICY_H
5#define QLAYOUTPOLICY_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtGui/private/qtguiglobal_p.h>
19#include <QtCore/qobject.h>
20#include <QtCore/qnamespace.h>
21
22#ifndef QT_NO_DATASTREAM
23# include <QtCore/qdatastream.h>
24#endif
25
27
28
29class QVariant;
30
32{
33 Q_GADGET_EXPORT(Q_GUI_EXPORT)
34
35public:
43 Q_FLAG(Policy)
44
45 static constexpr inline Policy Fixed = {};
46 static constexpr inline Policy Minimum = GrowFlag;
47 static constexpr inline Policy Maximum = ShrinkFlag;
48 static constexpr inline Policy Preferred = Minimum | Maximum;
49 static constexpr inline Policy MinimumExpanding = Minimum | ExpandFlag;
50 static constexpr inline Policy Expanding = Preferred | ExpandFlag;
51 static constexpr inline Policy Ignored = Preferred | IgnoreFlag;
52
54 DefaultType = 0x00000001,
55 ButtonBox = 0x00000002,
56 CheckBox = 0x00000004,
57 ComboBox = 0x00000008,
58 Frame = 0x00000010,
59 GroupBox = 0x00000020,
60 Label = 0x00000040,
61 Line = 0x00000080,
62 LineEdit = 0x00000100,
63 PushButton = 0x00000200,
64 RadioButton = 0x00000400,
65 Slider = 0x00000800,
66 SpinBox = 0x00001000,
67 TabWidget = 0x00002000,
68 ToolButton = 0x00004000
69 };
70 Q_DECLARE_FLAGS(ControlTypes, ControlType)
71
73
74 QLayoutPolicy(Policy horizontal, Policy vertical, ControlType type = DefaultType)
75 : data(0) {
76 bits.horPolicy = horizontal;
77 bits.verPolicy = vertical;
79 }
80 Policy horizontalPolicy() const { return static_cast<Policy>(bits.horPolicy); }
81 Policy verticalPolicy() const { return static_cast<Policy>(bits.verPolicy); }
82 Q_GUI_EXPORT ControlType controlType() const;
83
84 void setHorizontalPolicy(Policy d) { bits.horPolicy = d; }
85 void setVerticalPolicy(Policy d) { bits.verPolicy = d; }
86 Q_GUI_EXPORT void setControlType(ControlType type);
87
88 Qt::Orientations expandingDirections() const {
89 Qt::Orientations result;
94 return result;
95 }
96
97 void setHeightForWidth(bool b) { bits.hfw = b; }
98 bool hasHeightForWidth() const { return bits.hfw; }
99 void setWidthForHeight(bool b) { bits.wfh = b; }
100 bool hasWidthForHeight() const { return bits.wfh; }
101
102 bool operator==(const QLayoutPolicy& s) const { return data == s.data; }
103 bool operator!=(const QLayoutPolicy& s) const { return data != s.data; }
104
105 int horizontalStretch() const { return static_cast<int>(bits.horStretch); }
106 int verticalStretch() const { return static_cast<int>(bits.verStretch); }
107 void setHorizontalStretch(int stretchFactor) { bits.horStretch = static_cast<quint32>(qBound(0, stretchFactor, 255)); }
108 void setVerticalStretch(int stretchFactor) { bits.verStretch = static_cast<quint32>(qBound(0, stretchFactor, 255)); }
109
110 inline void transpose();
111
112
113private:
114#ifndef QT_NO_DATASTREAM
117#endif
118 QLayoutPolicy(int i) : data(i) { }
119
120 union {
121 struct {
129 quint32 padding : 1; // feel free to use
132 };
133};
134
135Q_DECLARE_OPERATORS_FOR_FLAGS(QLayoutPolicy::Policy)
136Q_DECLARE_OPERATORS_FOR_FLAGS(QLayoutPolicy::ControlTypes)
137
138#ifndef QT_NO_DATASTREAM
141#endif
142
143#ifndef QT_NO_DEBUG_STREAM
145#endif
146
148 Policy hData = horizontalPolicy();
149 Policy vData = verticalPolicy();
150 int hStretch = horizontalStretch();
151 int vStretch = verticalStretch();
152 setHorizontalPolicy(vData);
153 setVerticalPolicy(hData);
154 setHorizontalStretch(vStretch);
155 setVerticalStretch(hStretch);
156}
157
159
160#endif // QLAYOUTPOLICY_H
\inmodule QtCore\reentrant
Definition qdatastream.h:46
\inmodule QtCore
friend QDataStream & operator>>(QDataStream &, QLayoutPolicy &)
Reads the size policy from the data stream stream.
static constexpr Policy Minimum
static constexpr Policy Maximum
int verticalStretch() const
static constexpr Policy Ignored
bool operator!=(const QLayoutPolicy &s) const
Policy verticalPolicy() const
Q_GUI_EXPORT ControlType controlType() const
friend QDataStream & operator<<(QDataStream &, const QLayoutPolicy &)
Writes the size policy to the data stream stream.
bool hasHeightForWidth() const
static constexpr Policy Expanding
static constexpr Policy Preferred
int horizontalStretch() const
void setHorizontalStretch(int stretchFactor)
QLayoutPolicy(Policy horizontal, Policy vertical, ControlType type=DefaultType)
void setHorizontalPolicy(Policy d)
bool hasWidthForHeight() const
void setVerticalPolicy(Policy d)
static constexpr Policy Fixed
static constexpr Policy MinimumExpanding
struct QLayoutPolicy::@392::@394 bits
Policy horizontalPolicy() const
void setVerticalStretch(int stretchFactor)
bool operator==(const QLayoutPolicy &s) const
Q_GUI_EXPORT void setControlType(ControlType type)
void setHeightForWidth(bool b)
void setWidthForHeight(bool b)
Qt::Orientations expandingDirections() const
\inmodule QtCore
Definition qvariant.h:65
Combined button and popup list for selecting options.
@ Horizontal
Definition qnamespace.h:99
@ Vertical
Definition qnamespace.h:100
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
QDataStream & operator>>(QDataStream &, QLayoutPolicy &)
QDataStream & operator<<(QDataStream &, const QLayoutPolicy &)
constexpr const T & qBound(const T &min, const T &val, const T &max)
Definition qminmax.h:44
GLboolean GLboolean GLboolean b
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum type
GLdouble s
[6]
Definition qopenglext.h:235
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const void * bits
GLuint64EXT * result
[6]
#define Q_GADGET_EXPORT(...)
#define Q_FLAG(x)
unsigned int quint32
Definition qtypes.h:50