Класс QSizePolicy

Если в вертикальный контейнер большой высоты добавить надпись и кнопку, то под надпись будет выделено максимальное пространство, а кнопка займет пространство, достаточное для рекомендуемых размеров, которые возвращает метод sizeHint(). Управление размерами компонентов внутри контейнера определяется правилами, установленными с помощью класса QSizePolicy. Установить правила для компонента можно с помощью метода setSizePolicy() из класса QWidget, а получить значение с помощью метода sizePolicy(). Прототипы методов:

void setSizePolicy(QSizePolicy::Policy horizontal,
                   QSizePolicy::Policy vertical)
void setSizePolicy(QSizePolicy)
QSizePolicy sizePolicy() const

Создать экземпляр класса QSizePolicy позволяют следующие конструкторы:

#include <QSizePolicy>
QSizePolicy()
QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical,
            QSizePolicy::ControlType type = DefaultType)

Если параметры не заданы, то размер компонента должен точно соответствовать размерам, возвращаемым методом sizeHint(). В первом и втором параметрах указываются следующие константы:

  • QSizePolicy::Fixed — размер компонента должен точно соответствовать размерам, возвращаемым методом sizeHint();
  • QSizePolicy::Minimum — размер, возвращаемый методом sizeHint(), является минимальным для компонента. Размер может быть увеличен компоновщиком;
  • QSizePolicy::Maximum — размер, возвращаемый методом sizeHint(), является максимальным для компонента. Размер может быть уменьшен компоновщиком;
  • QSizePolicy::Preferred — размер, возвращаемый методом sizeHint(), является предпочтительным, но может быть как увеличен, так и уменьшен;
  • QSizePolicy::Expanding — размер, возвращаемый методом sizeHint(), может быть как увеличен, так и уменьшен. Компоновщик должен предоставить компоненту столько пространства, сколько возможно;
  • QSizePolicy::MinimumExpanding — размер, возвращаемый методом sizeHint(), является минимальным для компонента. Компоновщик должен предоставить компоненту столько пространства, сколько возможно;
  • QSizePolicy::Ignored — размер, возвращаемый методом sizeHint(), игнорируется. Компонент получит столько пространства, сколько возможно.

Изменить значения уже после создания экземпляра класса QSizePolicy позволяют методы setHorizontalPolicy() и setVerticalPolicy(). Прототипы методов:

void setHorizontalPolicy(QSizePolicy::Policy policy)
void setVerticalPolicy(QSizePolicy::Policy policy)

С помощью методов setHorizontalStretch() и setVerticalStretch() можно указать фактор растяжения. Чем больше указанное значение относительно значения, заданного в других компонентах, тем больше места будет выделяться под компонент. Этот параметр можно сравнить с жесткостью пружины. Прототипы методов:

void setHorizontalStretch(int stretchFactor)
void setVerticalStretch(int stretchFactor)

Можно указать, что минимальная высота компонента зависит от его ширины. Для этого необходимо передать значение true в метод setHeightForWidth(). Кроме того, следует переопределить метод heightForWidth() в классе компонента. Метод должен возвращать высоту компонента в соответствии с указанной в параметре шириной. Прототипы методов:

void setHeightForWidth(bool dependent)
virtual int heightForWidth(int w) const

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов