Классы QStackedLayout и QStackedWidget

Класс QStackedLayout реализует стек компонентов. В один момент времени показывается только один компонент. Иерархия наследования выглядит так:

(QObject, QLayoutItem) — QLayout — QStackedLayout

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

QStackedLayout()
QStackedLayout(QWidget *parent)
QStackedLayout(QLayout *parentLayout)

В необязательном параметре можно передать указатель на родительский компонент или контейнер. Если параметр не указан, то необходимо передать указатель на контейнер в метод setLayout() родительского компонента.

Класс QStackedLayout содержит следующие методы:

  • setStackingMode() — задает режим отображения компонентов. Прототип метода:
void setStackingMode(QStackedLayout::StackingMode stackingMode)

В параметре могут быть указаны следующие константы:

  • QStackedLayout::StackOne — только один компонент видим (значение по умолчанию);
  • QStackedLayout::StackAll — видны все компоненты;
  • stackingMode() — возвращает режим отображения компонентов. Прототип метода:
QStackedLayout::StackingMode stackingMode() const
  • addWidget() — добавляет компонент в конец контейнера. Метод возвращает индекс добавленного компонента. Прототип метода:
int addWidget(QWidget *widget)
  • insertWidget() — добавляет компонент в указанную позицию контейнера. Метод возвращает индекс добавленного компонента. Прототип метода:
int insertWidget(int index, QWidget *widget)
  • removeWidget() — удаляет компонент из контейнера. Прототип метода:
void removeWidget(QWidget *widget)
  • count() — возвращает количество компонентов внутри контейнера. Прототип метода:
int count() const
  • currentIndex() — возвращает индекс видимого компонента. Прототип метода:
int currentIndex() const
  • currentWidget() — возвращает указатель на видимый компонент. Прототип метода:
QWidget *currentWidget() const
  • widget() — возвращает указатель на компонент, который расположен по указанному индексу, или нулевой указатель. Прототип метода:
QWidget *widget(int index) const
  • setCurrentIndex() — делает видимым компонент с указанным в параметре индексом. Метод является слотом. Прототип метода:
void setCurrentIndex(int index)
  • setCurrentWidget() — делает видимым компонент, указатель на который указан в параметре. Метод является слотом. Прототип метода:
void setCurrentWidget(QWidget *widget)

Класс QStackedLayout содержит следующие сигналы:

  • currentChanged(int) — генерируется при изменении видимого компонента. Через параметр внутри обработчика доступен индекс нового компонента;
  • widgetRemoved(int) — генерируется при удалении компонента из контейнера. Через параметр внутри обработчика доступен индекс компонента.

Класс QStackedWidget также реализует стек компонентов, но создает новый компонент, а не контейнер. Иерархия наследования выглядит так:

(QObject, QPaintDevice) — QWidget — QFrame — QStackedWidget

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

#include <QStackedWidget>
QStackedWidget(QWidget *parent = nullptr)

Класс QStackedWidget содержит методы addWidget(), insertWidget(), removeWidget(), count(), currentIndex(), currentWidget(), widget(), setCurrentIndex() и setCurrentWidget(), которые выполняют аналогичные действия, что и одноименные методы в классе QStackedLayout. Кроме того, класс QStackedWidget наследует все методы из базовых классов и содержит метод indexOf(), который возвращает индекс компонента, указатель на который указан в параметре. Прототип метода:

int indexOf(const QWidget *widget) const

Чтобы отследить изменения внутри компонента следует назначить обработчики сигналов currentChanged(int) и widgetRemoved(int).

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

Помощь сайту

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

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