Шаг 86.
Библиотека PyQt5.
Размещение компонентов в окнах. Классы QStackedLayout и QStackedWidget
На этом шаге мы рассмотрим назначение и основные методы этих классов.
Класс QStackedLayout реализует стек компонентов; в один момент времени показывается только один компонент, а показ нужного компонента выполняется программно. Иерархия
наследования выглядит так:
(QObject, QLayoutItem) - QLayout - QStackedLayout
Создать экземпляр класса QStackedLayout можно следующим образом:
<Объект> = QStackedLayout([<Родитель>])
В необязательном параметре можно задать ссылку на родительский компонент или контейнер. Если параметр не указан, то необходимо передать ссылку на контейнер в метод setLayout() родительского компонента.
Класс QStackedLayout поддерживает следующие методы:
- addWidget (<Компонент>) - добавляет компонент в конец контейнера. Метод возвращает индекс добавленного компонента;
- insertWidget (<Индекс>, <Компонент>) - добавляет компонент в указанную позицию контейнера. Метод возвращает индекс добавленного компонента;
- setCurrentIndex (<Индекс>) - делает видимым компонент с указанным индексом. Метод является слотом;
- currentIndex () - возвращает индекс видимого компонента;
- setCurrentIndex (<Компонент>) - делает видимым указанный компонент. Метод является слотом;
- currentWidget () - возвращает ссылку на видимый компонент;
- setStackingMode (<Peжим>) - задает режим отображения компонентов. В параметре могут быть указаны следующие атрибуты из класса QStackedLayout:
- StackOne (или 0) - только один компонент видим (значение по умолчанию);
- StackAll (или 1) - видны все компоненты;
- stackingMode () - возвращает режим отображения компонентов;
- count () - возвращает количество компонентов внутри контейнера;
- widget (<Индекс>) - возвращает ссылку на компонент, который расположен по указанному индексу, или значение None.
Для удаления и замены компонентов следует пользоваться методами removeWidget() и replaceWidget(), описанными на 81 шаге.
Класс QStackedLayout поддерживает следующие сигналы:
- currentChanged (<Индекс>) - генерируется при изменении видимого компонента. Через параметр внутри обработчика доступен целочисленный индекс нового компонента;
- widgetRemoved (<Индекс>) - генерируется при удалении компонента из контейнера. Через параметр внутри обработчика доступен целочисленный индекс удаленного компонента.
Класс QStackedWidget также реализует стек компонентов, но представляет собой компонент, а не контейнер. Иерархия наследования выглядит так:
(QObject, QPaintDevice) - QWidget - QFrame - QStackedWidget
Создать экземпляр этого класса можно следующим образом:
<Объект> = QStackedWidget([<Родитель>])
Класс QStackedWidget поддерживает методы addWidget(), insertWidget(), removeWidget(), replaceWidget(), count(), currentIndex(), currentWidget(), widget(), setCurrentIndex() и setCurrentWidget(),
которые выполняют те же действия, что и одноименные методы в классе QStackedLayout. Кроме того, класс QStackedWidget наследует все методы из базовых классов и определяет
два дополнительных метода:
- indexOf (<Компонент>) - возвращает индекс компонента, ссылка на который указанав параметре;
- __len__() - возвращает количество компонентов. Метод вызывается при использовании функции len(), а также для проверки объекта на логическое значение.
Чтобы отследить изменения внутри компонента, следует назначить обработчики сигналов currentChanged и widgetRemoved.
На следующем шаге мы рассмотрим класс QSizePolicy.
Предыдущий шаг
Содержание
Следующий шаг