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