На этом шаге мы рассмотрим назначение этого класса.
Если в вертикальный контейнер большой высоты добавить надпись и кнопку, то кнопка займет пространство, совпадающее с рекомендуемыми размерами (которые возвращает метод sizeHint()), а под надпись будет выделено все остальное место. Управление размерами компонентов внутри контейнера определяется правилами, установленными с помощью класса QSizePolicy. Установить эти правила для компонента можно с помощью метода setSizePolicy(<QSizePolicy>) класса QWidget, а получить их - с помощью метода sizePolicy().
Создать экземпляр класса QSizePolicy (он определен в модуле QtWidgets) можно следующим способом:
<Объект> = QSizePolicy ( [<Правило для горизонтали>, <Правило для вертикали>[, <Тип компонента>]])
Если параметры не заданы, то размер компонента должен точно соответствовать размерам, возвращаемым методом sizeHint(). В первом и втором параметрах указывается один из следующих атрибутов класса QSizePolicy:
Изменить правила управления размерами уже после создания экземпляра класса QSizePolicy позволяют методы setHorizontalPolicy(<Правило для горизонтали>) и setVerticalPolicy(<Правило для вертикали>).
С помощью методов setHorizontalStretch(<Фактор для горизонтали>) и setVerticalStretch(<Фактор для вертикали>) можно указать фактор растяжения. Чем больше указанное значение относительно значения, заданного в других компонентах, тем больше места будет выделяться под компонент. Этот параметр можно сравнить с жесткостью пружины.
Можно указать, что минимальная высота компонента зависит от его ширины. Для этого необходимо передать значение True в метод setHeightForWidth(<Флаг>). Кроме того, следует в классе компонента переопределить метод heightForWidth(<Ширина>) - переопределенный метод должен возвращать высоту компонента для указанной в параметре ширины.
На следующем шаге мы рассмотрим объединение компонентов в группу.