Класс 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(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType) | |
| QSizePolicy::ControlType | controlType() const |
| Qt::Orientations | expandingDirections() const |
| bool | hasHeightForWidth() const |
| bool | hasWidthForHeight() const |
| QSizePolicy::Policy | horizontalPolicy() const |
| int | horizontalStretch() const |
| bool | retainSizeWhenHidden() const |
| void | setControlType(QSizePolicy::ControlType type) |
| void | setHeightForWidth(bool dependent) |
| void | setHorizontalPolicy(QSizePolicy::Policy policy) |
| void | setHorizontalStretch(int stretchFactor) |
| void | setRetainSizeWhenHidden(bool retainSize) |
| void | setVerticalPolicy(QSizePolicy::Policy policy) |
| void | setVerticalStretch(int stretchFactor) |
| void | setWidthForHeight(bool dependent) |
| void | transpose() |
| QSizePolicy | transposed() const |
| QSizePolicy::Policy | verticalPolicy() const |
| int | verticalStretch() const |
| QVariant | operator QVariant() const |
| bool | operator!=(const QSizePolicy &other) const |
| bool | operator==(const QSizePolicy &other) const |
Связанные нечлены
| uint | qHash(QSizePolicy key, uint seed = ...) |
| 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() — оптимальное, но виджет может быть уменьшен и останется полезным. Виджет может быть расширен, но нет преимуществ в том, чтобы он был больше, чем 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 |
Виджет может расти за пределы своего значения size hint, если это необходимо. |
QSizePolicy::ExpandFlag |
2 |
Виджет должен получить как можно больше места. |
QSizePolicy::ShrinkFlag |
4 |
Виджет может уменьшаться ниже своего значения size hint, если это необходимо. |
QSizePolicy::IgnoreFlag |
8 |
Значение size hint виджета игнорируется. Виджет получит как можно больше места. |
См. также Policy.
Документация функций-членов
QSizePolicy::QSizePolicy()
Создаёт объект QSizePolicy с Fixed как горизонтальной и вертикальной политиками.
Политики могут быть изменены с помощью функций setHorizontalPolicy() и setVerticalPolicy(). Используйте функцию setHeightForWidth(), если предпочтительная высота виджета зависит от ширины виджета (например, QLabel с переносом строк).
См. также setHorizontalStretch() и setVerticalStretch().
QSizePolicy::QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType)
Создаёт объект QSizePolicy с заданными horizontal и vertical политиками и указанным типом управления type.
Используйте setHeightForWidth(), если предпочтительная высота виджета зависит от ширины виджета (например, QLabel с переносом строк).
Эта функция была введена в Qt 4.3.
См. также setHorizontalStretch(), setVerticalStretch() и controlType().
QSizePolicy::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().
QSizePolicy::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(QSizePolicy::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(QSizePolicy::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(QSizePolicy::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().
QSizePolicy::Policy QSizePolicy::verticalPolicy() const
Возвращает вертикальную компоненту политики размера.
См. также setVerticalPolicy(), horizontalPolicy() и verticalStretch().
int QSizePolicy::verticalStretch() const
Возвращает вертикальный коэффициент растяжения политики размера.
См. также setVerticalStretch(), horizontalStretch() и verticalPolicy().
QVariant 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 = ...)
Возвращает значение хеша для 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/archives/qt-5.11/qsizepolicy.html