Класс QSizePolicy
Класс QSizePolicy — это атрибут макета, описывающий политику изменения размера по горизонтали и вертикали. Подробнее...
| Заголовок: | #include <QSizePolicy> |
| qmake: | QT += widgets |
Типы
| Перечисление | ControlType { DefaultType, ButtonBox, CheckBox, ComboBox, ..., ToolButton } |
| Флаги | ControlTypes |
| Перечисление | Policy { Fixed, Minimum, Maximum, Preferred, ..., Ignored } |
| Перечисление | PolicyFlag { GrowFlag, ExpandFlag, ShrinkFlag, IgnoreFlag } |
Открытые функции
| QSizePolicy() | |
| QSizePolicy(Policy horizontal, Policy vertical, ControlType type = DefaultType) | |
| ControlType | controlType() const |
| Qt::Orientations | expandingDirections() const |
| bool | hasHeightForWidth() const |
| bool | hasWidthForHeight() const |
| Policy | horizontalPolicy() const |
| int | horizontalStretch() const |
| bool | retainSizeWhenHidden() const |
| void | setControlType(ControlType type) |
| void | setHeightForWidth(bool dependent) |
| void | setHorizontalPolicy(Policy policy) |
| void | setHorizontalStretch(int stretchFactor) |
| void | setRetainSizeWhenHidden(bool retainSize) |
| void | setVerticalPolicy(Policy policy) |
| void | setVerticalStretch(int stretchFactor) |
| void | setWidthForHeight(bool dependent) |
| void | transpose() |
| QSizePolicy | transposed() const |
| Policy | verticalPolicy() const |
| int | verticalStretch() const |
| operator QVariant() const | |
| bool | operator!=(const QSizePolicy &other) const |
| bool | operator==(const QSizePolicy &other) const |
Связанные нечлены
| uint | qHash(QSizePolicy key, uint seed = 0) |
| QDataStream & | operator<<(QDataStream &stream, const QSizePolicy &policy) |
| QDataStream & | operator>>(QDataStream &stream, QSizePolicy &policy) |
Подробное описание
Класс QSizePolicy — это атрибут макета, описывающий политику изменения размера по горизонтали и вертикали.
Политика изменения размера виджета — это выражение его готовности к изменению размера различными способами, и она влияет на то, как виджет обрабатывается движком макета. Каждый виджет возвращает QSizePolicy, который описывает предпочтительную политику изменения размера по горизонтали и вертикали при выкладке. Вы можете изменить это для конкретного виджета, изменив свойство QWidget::sizePolicy.
QSizePolicy содержит два независимых значения QSizePolicy::Policy и два коэффициента растяжения; один описывает политику изменения размера виджета по горизонтали, а другой — по вертикали. Он также содержит флаг, указывающий, связаны ли высота и ширина его предпочтительного размера.
Политики по горизонтали и вертикали можно задать в конструкторе и изменить с помощью функций setHorizontalPolicy() и setVerticalPolicy(). Коэффициенты растяжения можно задать с помощью функций setHorizontalStretch() и setVerticalStretch(). Флаг, указывающий, зависит ли размер подсказки виджета (например, размер панели меню или метки с переносом слов) от ширины, можно установить с помощью функции setHeightForWidth().
Текущие политики изменения размера и коэффициенты растяжения можно получить с помощью функций horizontalPolicy(), verticalPolicy(), horizontalStretch() и verticalStretch(). В качестве альтернативы используйте функцию transpose() для обмена политиками и коэффициентами растяжения по горизонтали и вертикали. Функция hasHeightForWidth() возвращает текущее состояние флага, указывающего на зависимость подсказки размера.
Используйте функцию expandingDirections(), чтобы определить, может ли связанный виджет использовать больше места, чем указано в функции sizeHint(), а также определить, в каких направлениях он может расширяться.
Наконец, класс QSizePolicy предоставляет операторы для сравнения этой политики изменения размера с заданной политикой, а также оператор QVariant для хранения этого QSizePolicy в виде объекта QVariant.
См. также QSize, QWidget::sizeHint(), QWidget::sizePolicy и QLayoutItem::sizeHint().
Документация по типам членов
Перечисление QSizePolicy::ControlTypeФлаги 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 с QFrame::HLine или QFrame::VLine. |
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. |
Этот перечисление был введён или изменён в Qt 4.3.
Тип ControlTypes — это синоним для QFlags<ControlType>. Он хранит логическое ИЛИ комбинацию значений ControlType.
См. также 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() — наилучший, но виджет может быть уменьшен и останется полезным. Виджет может использовать дополнительное пространство, поэтому он должен получить как можно больше места (политика по умолчанию для 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.
Документация по функциям-членам
QSizePolicy::QSizePolicy()
Создаёт объект QSizePolicy с горизонтальными и вертикальными политиками Fixed.
Политики могут быть изменены с помощью функций setHorizontalPolicy() и setVerticalPolicy(). Используйте функцию setHeightForWidth(), если предпочтительная высота виджета зависит от ширины виджета (например, QLabel с переходом на новую строку).
См. также setHorizontalStretch() и setVerticalStretch().
QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, ControlType type = DefaultType)
Создаёт объект QSizePolicy с заданными горизонтальными и вертикальными политиками и указанным типом управления.
Используйте setHeightForWidth(), если предпочтительная высота виджета зависит от ширины виджета (например, QLabel с переходом на новую строку).
Эта функция была добавлена в Qt 4.3.
См. также setHorizontalStretch(), setVerticalStretch() и controlType().
ControlType QSizePolicy::controlType() const
Возвращает тип управления, связанный с виджетом, для которого применяется эта политика размера.
Эта функция была добавлена в Qt 4.3.
См. также setControlType().
Qt::Orientations QSizePolicy::expandingDirections() const
Возвращает, может ли виджет использовать больше места, чем указано функцией QWidget::sizeHint().
Значение Qt::Horizontal или Qt::Vertical означает, что виджет может увеличиваться по горизонтали или вертикали (т.е. горизонтальная или вертикальная политика равна Expanding или MinimumExpanding), а Qt::Horizontal | Qt::Vertical означает, что он может увеличиваться по обеим осям.
См. также horizontalPolicy() и verticalPolicy().
bool QSizePolicy::hasHeightForWidth() const
Возвращает true если предпочтительная высота виджета зависит от его ширины; в противном случае возвращает false.
См. также setHeightForWidth().
bool QSizePolicy::hasWidthForHeight() const
Возвращает true если ширина виджета зависит от его высоты; в противном случае возвращает false.
См. также setWidthForHeight().
Policy QSizePolicy::horizontalPolicy() const
Возвращает горизонтальную составляющую политики размера.
См. также setHorizontalPolicy(), verticalPolicy() и horizontalStretch().
int QSizePolicy::horizontalStretch() const
Возвращает коэффициент растяжения по горизонтали для политики размера.
См. также setHorizontalStretch(), verticalStretch() и horizontalPolicy().
bool QSizePolicy::retainSizeWhenHidden() const
Возвращает значение, указывающее, нужно ли сохранять размер виджета при его скрытии. По умолчанию это false.
Функция была добавлена в Qt 5.2.
См. также setRetainSizeWhenHidden().
void QSizePolicy::setControlType(ControlType type)
Устанавливает тип управления, связанный с виджетом, для которого применяется эта политика размера, в type.
Тип управления определяет тип виджета, для которого применяется эта политика размера. Он используется некоторыми стилями, в частности QMacStyle, для вставки правильных отступов между виджетами. Например, в руководствах macOS Aqua указано, что кнопки должны быть разделены 12 пикселями, тогда как вертикально расположенные радиокнопки требуют только 6 пикселей.
Функция была добавлена в Qt 4.3.
См. также controlType() и QStyle::layoutSpacing().
void QSizePolicy::setHeightForWidth(bool dependent)
Устанавливает флаг, определяющий, зависит ли предпочтительная высота виджета от его ширины, в значение dependent.
См. также hasHeightForWidth() и setWidthForHeight().
void QSizePolicy::setHorizontalPolicy(Policy policy)
Устанавливает горизонтальную составляющую в заданную policy.
См. также horizontalPolicy(), setVerticalPolicy() и setHorizontalStretch().
void QSizePolicy::setHorizontalStretch(int stretchFactor)
Устанавливает коэффициент растяжения по горизонтали политики размера в заданное значение stretchFactor. stretchFactor должен быть в диапазоне [0,255].
Когда два виджета расположены рядом в горизонтальном макете, установка коэффициента растяжения по горизонтали виджета слева в 2, а виджета справа в 1 обеспечит, что виджет слева всегда будет в два раза больше, чем виджет справа.
См. также horizontalStretch(), setVerticalStretch() и setHorizontalPolicy().
void QSizePolicy::setRetainSizeWhenHidden(bool retainSize)
Устанавливает, сохранять ли размер виджета при его скрытии. Если retainSize true, макет не изменится при скрытии виджета.
Функция была добавлена в Qt 5.2.
См. также retainSizeWhenHidden().
void QSizePolicy::setVerticalPolicy(Policy policy)
Устанавливает вертикальную составляющую в заданную policy.
См. также verticalPolicy(), setHorizontalPolicy() и setVerticalStretch().
void QSizePolicy::setVerticalStretch(int stretchFactor)
Устанавливает коэффициент растяжения по вертикали политики размера в заданное значение stretchFactor. stretchFactor должен быть в диапазоне [0,255].
Когда два виджета расположены рядом в вертикальном макете, установка коэффициента растяжения по вертикали виджета сверху в 2, а виджета снизу в 1 обеспечит, что виджет сверху всегда будет в два раза больше, чем виджет снизу.
См. также verticalStretch(), setHorizontalStretch() и setVerticalPolicy().
void QSizePolicy::setWidthForHeight(bool dependent)
Устанавливает флаг, определяющий, зависит ли ширина виджета от его высоты, в значение dependent.
Это поддерживается только для подклассов QGraphicsLayout. Одновременное применение ограничений по высоте для ширины и ширине для высоты невозможно.
См. также hasWidthForHeight() и setHeightForWidth().
void QSizePolicy::transpose()
Меняет местами горизонтальную и вертикальную политики и коэффициенты растяжения.
См. также transposed().
QSizePolicy QSizePolicy::transposed() const
Возвращает объект политики размера с горизонтальной и вертикальной политиками и коэффициентами растяжения, поменянными местами.
Функция была добавлена в Qt 5.9.
См. также transpose().
Policy QSizePolicy::verticalPolicy() const
Возвращает вертикальную составляющую политики размера.
См. также setVerticalPolicy(), horizontalPolicy() и verticalStretch().
int QSizePolicy::verticalStretch() const
Возвращает коэффициент растяжения по вертикали для политики размера.
См. также setVerticalStretch(), horizontalStretch() и verticalPolicy().
QSizePolicy::operator QVariant() const
Возвращает QVariant, хранящий эту QSizePolicy.
bool QSizePolicy::operator!=(const QSizePolicy &other) const
Возвращает true, если эта политика отличается от other; в противном случае возвращает false.
См. также operator==().
bool QSizePolicy::operator==(const QSizePolicy &other) const
Возвращает true, если эта политика равна other; в противном случае возвращает false.
См. также operator!=().
Связанные нечлены
uint qHash(QSizePolicy key, uint seed = 0)
Возвращает значение хэша для key, используя seed для задания начального значения расчёта.
Функция была добавлена в Qt 5.6.
QDataStream &operator<<(QDataStream &stream, const QSizePolicy &policy)
Записывает размер policy в поток данных stream.
Функция была добавлена в Qt 4.2.
См. также Формат операторов QDataStream.
QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy)
Читает размер policy из потока данных stream.
Функция была добавлена в Qt 4.2.
См. также Формат операторов QDataStream.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qsizepolicy.html