Класс QSizePolicy
Класс QSizePolicy — это атрибут макета, описывающий политику изменения размеров по горизонтали и вертикали. Подробнее...
| Заголовок: | #include <QSizePolicy> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
Публичные типы
| Перечисление | ControlType { DefaultType, ButtonBox, CheckBox, ComboBox, Frame, …, ToolButton } |
| Флаги | ControlTypes |
| Перечисление | Policy { Fixed, Minimum, Maximum, Preferred, Expanding, …, Ignored } |
| Перечисление | PolicyFlag { GrowFlag, ExpandFlag, ShrinkFlag, IgnoreFlag } |
Публичные функции
| QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType) | |
| QSizePolicy() | |
| 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 |
Связанные нечлены
| size_t | qHash(QSizePolicy key, size_t seed = 0) |
| QDataStream & | operator<<(QDataStream &stream, const QSizePolicy &policy) |
| QDataStream & | operator>>(QDataStream &stream, QSizePolicy &policy) |
Подробное описание
Политика размера виджета — это выражение его готовности к изменению размера различными способами и влияет на то, как движок макета обращается с виджетом. Каждый виджет возвращает 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. |
Тип ControlTypes является псевдонимом для QFlags<ControlType>. Он хранит результат логического ИЛИ комбинации значений ControlType.
См. также setControlType() и controlType().
enum 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().
enum QSizePolicy::PolicyFlag
Эти флаги комбинируются для создания различных значений Policy:
| Постоянная | Значение | Описание |
|---|---|---|
QSizePolicy::GrowFlag |
1 |
Виджет может увеличиться за пределы своего значения sizeHint(), если это необходимо. |
QSizePolicy::ExpandFlag |
2 |
Виджет должен получить как можно больше пространства. |
QSizePolicy::ShrinkFlag |
4 |
Виджет может уменьшиться ниже своего значения sizeHint(), если это необходимо. |
QSizePolicy::IgnoreFlag |
8 |
Значение sizeHint() виджета игнорируется. Виджет получит как можно больше пространства. |
См. также Policy.
Документация по функциям-членам
QSizePolicy::QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType)
Создаёт объект QSizePolicy с заданными политиками horizontal и vertical и указанным типом управления type.
Используйте setHeightForWidth(), если предпочтительная высота виджета зависит от его ширины (например, QLabel с переходом на новую строку).
См. также setHorizontalStretch(), setVerticalStretch() и controlType().
QSizePolicy::QSizePolicy()
Создаёт объект QSizePolicy с политиками Fixed по горизонтали и вертикали.
Политики можно изменить с помощью функций setHorizontalPolicy() и setVerticalPolicy(). Используйте функцию setHeightForWidth(), если предпочтительная высота виджета зависит от его ширины (например, QLabel с переходом на новую строку).
См. также setHorizontalStretch() и setVerticalStretch().
QSizePolicy::ControlType QSizePolicy::controlType() const
Возвращает тип управления, связанный с виджетом, для которого применяется эта политика размера.
См. также 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().
[since 5.2] bool QSizePolicy::retainSizeWhenHidden() const
Возвращает значение, указывающее, следует ли макету сохранять размер виджета при его скрытии. По умолчанию это false.
Эта функция была добавлена в Qt 5.2.
См. также setRetainSizeWhenHidden().
void QSizePolicy::setControlType(QSizePolicy::ControlType type)
Устанавливает тип управления, связанный с виджетом, для которого применяется эта политика размеров, в type.
Тип управления указывает тип виджета, для которого применяется эта политика размеров. Он используется некоторыми стилями, в частности QMacStyle, для вставки надлежащих отступов между виджетами. Например, руководства macOS Aqua указывают, что кнопки должны быть разделены 12 пикселями, в то время как вертикально расположенные радиокнопки требуют только 6 пикселей.
См. также 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().
[since 5.2] 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().
[since 5.9] 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!=().
Связанные нечленные функции
[since 5.6] size_t qHash(QSizePolicy key, size_t seed = 0)
Возвращает хеш-значение для key, используя seed для инициализации вычисления.
Эта функция была добавлена в Qt 5.6.
QDataStream &operator<<(QDataStream &stream, const QSizePolicy &policy)
Записывает политику размеров policy в поток данных stream.
См. также Формат операторов QDataStream.
QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy)
Читает политику размеров policy из потока данных stream.
См. также Формат операторов QDataStream.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qsizepolicy.html