【翻译】QSizePolicy详解

一、描述

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);

猜你喜欢

转载自blog.csdn.net/kenfan1647/article/details/115298598