一、描述
QSizePolicy类是布局属性,描述了水平和垂直大小调整策略。
QWidget的大小策略是其调整大小意愿的表达,并影响布局引擎如何处理小部件。每个小部件都返回一个QSizePolicy,描述其布局时首选的水平和垂直大小调整策略。
QSizePolicy包含两个独立的QSizePolicy::Policy值和两个拉伸因子;一个描述小部件的水平尺寸策略,另一个描述小部件的垂直尺寸策略。它还包含一个标志,用于指示其首选大小的高度和宽度是否相关。
二、类型成员
1、QSizePolicy::ControlType。设置与应用大小策略的小部件关联的控件类型,一些样式(特别是QMacStyle)使用它在小部件之间插入适当的间距。
- QSizePolicy::DefaultType。默认。
- QSizePolicy::ButtonBox。QDialogButtonBox实例。
- QSizePolicy::CheckBox
- QSizePolicy::ComboBox
- QSizePolicy::Frame。QFrame实例。
- QSizePolicy::GroupBox
- QSizePolicy::Label
- QSizePolicy::Line。QFrame实例设置为QFrame::HLine或QFrame::VLine。
- QSizePolicy::LineEdit
- QSizePolicy::PushButton
- QSizePolicy::RadioButton
- QSizePolicy::Slider。QAbstractSlider实例。
- QSizePolicy::SpinBox。QAbstractSpinBox实例。
- QSizePolicy::TabWidget
- QSizePolicy::ToolButton
2、QSizePolicy::Policy。策略。描述了构造QSizePolicy时使用的各种尺寸调整类型。
- QSizePolicy::Fixed:size固定为QWidget::sizeHint()。
- QSizePolicy::Minimum:sizeHint()为最小size。
- QSizePolicy::Maximum:sizeHint()为最大size。
- QSizePolicy::Preferred:sizeHint()为推荐的size。
- QSizePolicy::Expanding:sizeHint()为推荐的size,但尽可能地获得更大的空间。
- QSizePolicy::MinimumExpanding:sizeHint()是最小的size,但尽可能地获得更大的空间。
- QSizePolicy::Ignored:sizeHint()被忽略。小部件将获得尽可能多的空间。
3、QSizePolicy::PolicyFlag。策略标志,这些标志组成了策略值。
- QSizePolicy::GrowFlag:如果需要,小部件可以扩展到超出其大小。
- QSizePolicy::ExpandFlag:小部件应该获得尽可能多的空间。
- QSizePolicy::ShrinkFlag:如果有必要,小部件可以缩小到其大小以下。
- QSizePolicy::IgnoreFlag:小部件的大小提示被忽略。小部件将获得尽可能多的空间。
三、成员函数
1、Qt::Orientations QSizePolicy::expandingDirections() const。返回值表示是否可以使用比QWidget::sizeHint()指示的更多的空间。返回Qt::Horizontal或Qt::Vertical值表示小部件可以水平或垂直拓展,而返回Qt::Horizontal | Qt::Vertical表示它可以在两个维度上增长。
2、bool QSizePolicy::hasHeightForWidth() const。如果小部件的首选高度取决于其宽度,则返回true;否则返回false。
3、bool QSizePolicy::hasWidthForHeight() const。如果小部件的宽度取决于其高度,则返回true;否则返回false。
4、QSizePolicy::Policy QSizePolicy::horizontalPolicy / verticalPolicy() const。返回水平/垂直策略。
5、int QSizePolicy::horizontalStretch / verticalStretch() const。返回大小策略的水平/垂直拉伸因子。
6、bool QSizePolicy::retainSizeWhenHidden() const。返回小部件隐藏时布局是否应保留其大小。默认情况下为false。
7、void QSizePolicy::setControlType(QSizePolicy::ControlType type)。设置应用小部件的控件类型。
8、void QSizePolicy::setHeightForWidth / setWidthForHeight(bool dependent)。设置小部件的首选高度/宽度是否取决于其宽度/高度。
9、void QSizePolicy::setHorizontalPolicy / setVerticalPolicy(QSizePolicy::Policy policy)。设置水平/垂直方向策略。
10、void QSizePolicy::setHorizontalStretch / setVerticalStretch(int stretchFactor)。设置大小策略的水平拉伸因子。必须在[0~255]范围内。当两个窗口小部件在水平布局中彼此相邻时,将左侧窗口小部件的水平拉伸系数设置为2,将右侧窗口小部件的系数设置为1,将确保左侧窗口小部件的大小始终是右侧窗口小部件的两倍。
11、void QSizePolicy::setRetainSizeWhenHidden(bool retainSize)。设置布局在隐藏时是否应保留小部件的大小。如果为true,则不会通过隐藏小部件来更改布局。
12、void QSizePolicy::transpose()。交换水平/垂直大小策略。
13、QSizePolicy QSizePolicy::transposed() const。返回交换了水平和垂直策略和拉伸的大小策略的对象。
14、QVariant QSizePolicy::operator QVariant() const。返回存储此QSizePolicy的QVariant。
QSizePolicy sp = this->sizePolicy();
qDebug()<<static_cast<QVariant>(sp);