QSizePolicy 类
QSizePolicy 类是描述水平和垂直调整策略的布局属性。 更多...
头文件 | #include <QSizePolicy> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
公共类型
枚举 | ControlType { DefaultType, ButtonBox, CheckBox, ComboBox, Frame, …, ToolButton } |
标志 | ControlTypes |
枚举 | Policy { Fixed, Minimum, Maximum, Preferred, Expanding, …, Ignored } |
枚举 | PolicyFlag { GrowFlag, ExpandFlag, ShrinkFlag, IgnoreFlag } |
公共函数
QSizePolicy() | |
QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType) | |
QSizePolicy::ControlType | controlType() const |
Qt::Orientations | expandingDirections() const |
布尔值 | hasHeightForWidth() const |
布尔值 | hasWidthForHeight() const |
QSizePolicy::Policy | horizontalPolicy() const |
整数 | horizontalStretch() const |
布尔值 | retainSizeWhenHidden() const |
空函数 | setControlType(QSizePolicy::ControlType type) |
空函数 | setHeightForWidth(bool dependent) |
空函数 | setHorizontalPolicy(QSizePolicy::Policy policy) |
空函数 | setHorizontalStretch(int stretchFactor) |
空函数 | setRetainSizeWhenHidden(bool retainSize) |
空函数 | setVerticalPolicy(QSizePolicy::Policy policy) |
空函数 | setVerticalStretch(int stretchFactor) |
空函数 | setWidthForHeight(bool dependent) |
空函数 | 转置() |
QSizePolicy | transposed() const |
QSizePolicy::Policy | verticalPolicy() const |
整数 | verticalStretch() const |
QVariant | operator QVariant() const |
布尔值 | operator!=(const QSizePolicy &other) const |
布尔值 | operator==(const QSizePolicy &other) const |
相关非成员
size_t | qHash(QSizePolicy key, size_t seed = 0) |
QDataStream & | operator<<(QDataStream &stream, const QSizePolicy &policy) |
QDataStream & | operator>>(QDataStream &stream, QSizePolicy &policy) |
详细描述
小部件的大小策略表示它愿意以各种方式被调整大小,并影响布局引擎如何处理该小部件。每个小部件在布局时都返回一个 QSizePolicy,它描述了它偏好的水平和垂直调整大小策略。您可以更改特定小部件的 QWidget::sizePolicy 属性来更改此设置。
QSizePolicy 包含两个独立的 QSizePolicy::Policy 值和两个拉伸因子;一个描述了小部件的水平大小策略,另一个描述了其垂直大小策略。它还包含一个标志,表示其首选大小的高度和宽度是否有关联。
可以在构造函数中设置水平和垂直策略,并使用 setHorizontalPolicy() 和 setVerticalPolicy() 函数修改它们。可以使用 setHorizontalStretch() 和 setVerticalStretch() 函数设置拉伸因子。可以使用 setHeightForWidth() 函数设置标志,以指示组件的 sizeHint() 是否依赖于宽度(例如菜单栏或自动换行的标签)。
可以使用 horizontalPolicy(),verticalPolicy(),horizontalStretch() 和 verticalStretch() 函数检索当前的尺寸策略和拉伸因子。或者,使用 transpose() 函数交换水平和垂直策略和拉伸。函数 hasHeightForWidth() 返回当前标志指示的尺寸提示依赖状态。
使用 expandingDirections() 函数确定相关小部件是否可以利用比其 sizeHint() 函数指示的更多空间,以及确定它可以在哪些方向扩展。
最后,QSizePolicy 类提供了比较此大小策略与给定策略的运算符,以及将此 QSizePolicy 存储为一个 QVariant 对象的运算符。
另请参阅 QSize,QWidget::sizeHint(),QWidget::sizePolicy,以及 QLayoutItem::sizeHint。
成员类型文档
enum QSizePolicy::ControlType
flags QSizePolicy::ControlTypes
此枚举指定了各种小部件在布局交互方面的不同类型
常量 | 值 | 描述 |
---|---|---|
QSizePolicy::DefaultType | 0x00000001 | 当未指定时为默认类型。 |
QSizePolicy::ButtonBox | 0x00000002 | 一个 QDialogButtonBox 实例。 |
QSizePolicy::CheckBox | 0x00000004 | 一个 QCheckBox 实例。 |
QSizePolicy::ComboBox | 0x00000008 | 一个 QComboBox 实例。 |
QSizePolicy::Frame | 0x00000010 | 一个 QFrame 实例。 |
QSizePolicy::GroupBox | 0x00000020 | 一个QGroupBox实例。 |
QSizePolicy::Label | 0x00000040 | 一个QLabel实例。 |
QSizePolicy::Line | 0x00000080 | 一个带有QFrame::HLine或QFrame::VLine的QFrame实例。 |
QSizePolicy::LineEdit | 0x00000100 | 一个QLineEdit实例。 |
QSizePolicy::PushButton | 0x00000200 | 一个QPushButton实例。 |
QSizePolicy::RadioButton | 0x00000400 | 一个QRadioButton实例。 |
QSizePolicy::Slider | 0x00000800 | 一个QAbstractSlider实例。 |
QSizePolicy::SpinBox | 0x00001000 | 一个QAbstractSpinBox实例。 |
QSizePolicy::TabWidget | 0x00002000 | 一个QTabWidget实例。 |
QSizePolicy::ToolButton | 0x00004000 | 一个QToolButton实例。 |
The ControlTypes type is a typedef for QFlags<ControlType>. It stores an OR combination of ControlType values.
另请参阅 setControlType() 和 controlType。
枚举 QSizePolicy::Policy
此枚举描述了在构建QSizePolicy时使用的各种每个维度的尺寸类型。
常量 | 值 | 描述 |
---|---|---|
QSizePolicy::Fixed | 0 | 仅接受QWidget::sizeHint(),因此小部件不能增长或缩小(例如,推按钮的垂直方向)。 |
QSizePolicy::Minimum | GrowFlag | sizeHint()是最小的,且足够。可以扩展小部件,但没有使它更大的优势(例如,推按钮的水平方向)。它的尺寸不能小于sizeHint()提供的尺寸。 |
QSizePolicy::Maximum | ShrinkFlag | sizeHint()是最大的。如果其他小部件需要空间,则小部件可以被缩小任意数量,而不会受到损害(例如,分隔线)。它的尺寸不能大于sizeHint()提供的尺寸。 |
QSizePolicy::Preferred | GrowFlag | ShrinkFlag | sizeHint()是最佳的,但即使被缩小,小部件仍然有用。小部件可以扩展,但没有使它比sizeHint()更大的优势(默认QWidget策略)。 |
QSizePolicy::Expanding | GrowFlag | ShrinkFlag | ExpandFlag | sizeHint()是一个合理的尺寸,但即使被缩小,小部件仍然有用。小部件可以适当使用额外的空间,因此应该尽可能多地获取空间(例如,水平滑动条的横向方向)。 |
QSizePolicy::MinimumExpanding | GrowFlag | ExpandFlag | sizeHint()是最小的,且足够。小部件可以适当使用额外的空间,因此应该尽可能多地获取空间(例如,水平滑动条的横向方向)。 |
QSizePolicy::Ignored | ShrinkFlag | GrowFlag | IgnoreFlag | 忽略sizeHint()。小部件将获取尽可能多的空间。 |
另请参阅 PolicyFlag,setHorizontalPolicy() 和 setVerticalPolicy。
枚举 QSizePolicy::PolicyFlag
这些标志可以组合在一起以形成各种Policy值
常量 | 值 | 描述 |
---|---|---|
QSizePolicy::GrowFlag | 1 | 如果需要,小部件可以增长超过其尺寸提示。 |
QSizePolicy::ExpandFlag | 2 | 应使小部件获取尽可能多的空间。 |
QSizePolicy::ShrinkFlag | 4 | 如果需要,小部件可以缩小到其尺寸提示以下。 |
QSizePolicy::IgnoreFlag | 8 | 忽略小部件的尺寸提示。小部件将获取尽可能多的空间。 |
另请参阅 Policy。
成员函数文档
[constexpr noexcept]
QSizePolicy::QSizePolicy()
使用默认的水平和垂直策略构造 QSizePolicy 对象。
可以使用 setHorizontalPolicy() 和 setVerticalPolicy() 函数更改策略。如果小部件的首选高度取决于其宽度(例如,具有行换行功能的 QLabel),请使用 setHeightForWidth() 函数。
另请参阅setHorizontalStretch() 和 setVerticalStretch()。
[constexpr noexcept]
QSizePolicy::QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType)
使用指定的水平策略和垂直策略,以及指定的控制类型构造 QSizePolicy 对象。
如果小部件的首选高度取决于其宽度(例如,具有行换行功能的 QLabel),请使用 setHeightForWidth()。
另请参阅setHorizontalStretch(),setVerticalStretch() 和 controlType。
[noexcept]
QSizePolicy::ControlType QSizePolicy::controlType() const
返回与应用于此大小策略的小部件相关联的控制类型。
另请参阅setControlType。
[constexpr noexcept]
Qt::Orientations QSizePolicy::expandingDirections() const
返回小部件是否可以利用比 QWidget::sizeHint() 函数指示的更多空间。
Qt::Horizontal 或 Qt::Vertical 的值表示小部件可以在水平或垂直方向上生长(即,水平策略或垂直策略是 Expanding 或 MinimumExpanding),而 Qt::Horizontal | Qt::Vertical 表示它可以在两个方向上生长。
另请参阅horizontalPolicy() 和 verticalPolicy。
[constexpr noexcept]
bool QSizePolicy::hasHeightForWidth() const
如果小部件的首选高度取决于其宽度,则返回 true
;否则返回 false
。
另请参阅setHeightForWidth。
[constexpr noexcept]
bool QSizePolicy::hasWidthForHeight() const
如果小部件的宽度取决于其高度,则返回 true
;否则返回 false
。
另请参阅setWidthForHeight。
[constexpr noexcept]
QSizePolicy::Policy QSizePolicy::horizontalPolicy() const
返回大小策略的水平组件。
另请参阅setHorizontalPolicy(),verticalPolicy() 和 horizontalStretch()。
[constexpr noexcept]
int QSizePolicy::horizontalStretch() const
返回大小策略的水平拉伸因子。
另请参阅setHorizontalStretch(),verticalStretch() 和 horizontalPolicy()。
[constexpr noexcept]
bool QSizePolicy::retainSizeWhenHidden() const
返回布局在组件隐藏时是否保留组件的大小。默认情况下为 false
。
另请参阅setRetainSizeWhenHidden()。
[noexcept]
void QSizePolicy::setControlType(QSizePolicy::ControlType type)
将应用于组件的大小策略的相关控件类型设置为 type。
控件类型指定了应用此大小策略的组件的类型。它被某些样式(特别是 QMacStyle)用来在组件之间插入适当的间距。例如,macOS Aqua 指南指定按钮之间应有 12 像素的间距,而垂直堆叠的单选按钮需要 6 像素的间距。
另请参阅controlType() 和 QStyle::layoutSpacing()。
[constexpr noexcept]
void QSizePolicy::setHeightForWidth(bool dependent)
将组件的高度是否依赖于其宽度的标志设置为 dependent。
另请参阅hasHeightForWidth() 和 setWidthForHeight()。
[constexpr noexcept]
void QSizePolicy::setHorizontalPolicy(QSizePolicy::Policy policy)
将水平组件设置为给定的 policy。
另请参阅horizontalPolicy(),setVerticalPolicy() 和 setHorizontalStretch()。
[constexpr]
void QSizePolicy::setHorizontalStretch(int stretchFactor)
将大小策略的水平拉伸因子设置为给定的 stretchFactor。 stretchFactor 必须在 [0,255] 范围内。
当两个组件在水平布局中相邻时,将左侧组件的水平拉伸因子设置为 2,右侧组件的因子设置为 1,将确保左侧组件的大小将是右侧组件的两倍。
另请参阅horizontalStretch(),setVerticalStretch() 和 setHorizontalPolicy()。
[constexpr noexcept]
void QSizePolicy::setRetainSizeWhenHidden(bool retainSize)
设置是否在隐藏布局时保留小部件的大小。如果 retainSize 为 true
,则隐藏小部件时不会更改布局。
另请参阅 retainSizeWhenHidden().
[constexpr noexcept]
void QSizePolicy::setVerticalPolicy(QSizePolicy::Policy policy)
将垂直组件设置给指定的 policy。
另请参阅 verticalPolicy(),setHorizontalPolicy() 和 setVerticalStretch().
[constexpr]
void QSizePolicy::setVerticalStretch(int stretchFactor)
将尺寸策略的垂直拉伸因子设置给给定的 stretchFactor。 stretchFactor 必须在范围 [0, 255] 内。
当两个小部件在垂直布局中相邻时,将顶部小部件的垂直拉伸因子设置为 2,底部小部件的因子设置为 1,将确保顶部小部件始终是底部小部件的两倍大小。
另请参阅 verticalStretch(),setHorizontalStretch() 和 setVerticalPolicy().
[constexpr noexcept]
void QSizePolicy::setWidthForHeight(bool dependent)
设置标志以确定小部件的宽度是否依赖于其高度,为 dependent。
这仅适用于 QGraphicsLayout 的子类。同时不能有高度依赖宽度以及宽度依赖高度的约束。
另请参阅 hasWidthForHeight() 和 setHeightForWidth().
[constexpr noexcept]
void QSizePolicy::transpose()
交换水平和垂直策略和拉伸。
另请参阅 transposed().
[constexpr noexcept]
QSizePolicy QSizePolicy::transposed() const
返回一个具有交换了水平和垂直策略和拉伸的尺寸策略对象。
另请参阅 transpose().
[constexpr noexcept]
QSizePolicy::Policy QSizePolicy::verticalPolicy() const
返回尺寸策略的垂直组件。
另请参阅 setVerticalPolicy(),horizontalPolicy() 和 verticalStretch().
[constexpr noexcept]
int QSizePolicy::verticalStretch() const
返回尺寸策略的垂直拉伸因子。
另请参阅 setVerticalStretch(),horizontalStretch() 和 verticalPolicy。
QVariant QSizePolicy::operator QVariant() const
返回一个存储此 QSizePolicy 的 QVariant。
[constexpr noexcept]
bool QSizePolicy::operator!=(const QSizePolicy &other) const
如果此策略与 other 不同,则返回 true
;否则返回 false
。
另请参阅 operator==。
[constexpr noexcept]
bool QSizePolicy::operator==(const QSizePolicy &other) const
如果此策略与 other 相等,则返回 true
;否则返回 false
。
另请参阅 operator!=。
相关非成员
[noexcept]
size_t qHash(QSizePolicy key, size_t seed = 0)
使用 seed 对计算进行初始化,返回 key 的哈希值。
QDataStream &operator<<(QDataStream &stream, const QSizePolicy &policy)
将大小策略 policy 写入数据流 stream。
另请参阅 QDataStream 操作符的格式。
QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy)
从数据流 stream 中读取大小策略 policy。
另请参阅 QDataStream 操作符的格式。
© 2024 The Qt Company Ltd. 本文档中的贡献属于其各自的版权所有者。本文档是根据自由软件基金会的条件,以 GNU 自由文档许可证版本 1.3 发布的。Qt 和相应的标志是芬兰的 The Qt Company Ltd. 和/或在全世界其他国家的商标。所有其他商标均为其各自所有者的财产。