Класс QStackedLayout
Класс QStackedLayout предоставляет стеки виджетов, где только один виджет виден в данный момент. Подробнее...
| Заголовок: | #include <QStackedLayout> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QLayout |
Типы
| перечисление | StackingMode { StackOne, StackAll } |
Свойства
- count : const int
- currentIndex : int
- stackingMode : StackingMode
Открытые функции
| QStackedLayout(QLayout *parentLayout) | |
| QStackedLayout(QWidget *parent) | |
| QStackedLayout() | |
| virtual | ~QStackedLayout() |
| int | addWidget(QWidget *widget) |
| int | currentIndex() const |
| QWidget * | currentWidget() const |
| int | insertWidget(int index, QWidget *widget) |
| void | setStackingMode(QStackedLayout::StackingMode stackingMode) |
| QStackedLayout::StackingMode | stackingMode() const |
| QWidget * | widget(int index) const |
Переопределенные открытые функции
| virtual void | addItem(QLayoutItem *item) override |
| virtual int | count() const override |
| virtual bool | hasHeightForWidth() const override |
| virtual int | heightForWidth(int width) const override |
| virtual QLayoutItem * | itemAt(int index) const override |
| virtual QSize | minimumSize() const override |
| virtual void | setGeometry(const QRect &rect) override |
| virtual QSize | sizeHint() const override |
| virtual QLayoutItem * | takeAt(int index) override |
Открытые слоты
| void | setCurrentIndex(int index) |
| void | setCurrentWidget(QWidget *widget) |
Сигналы
| void | currentChanged(int index) |
| void | widgetRemoved(int index) |
Подробное описание
QStackedLayout может использоваться для создания пользовательского интерфейса, аналогичного тому, что предоставляет QTabWidget. Также существует удобный класс QStackedWidget, построенный поверх QStackedLayout.
QStackedLayout можно заполнить несколькими дочерними виджетами («страницами»). Например:
QWidget *firstPageWidget = new QWidget;
QWidget *secondPageWidget = new QWidget;
QWidget *thirdPageWidget = new QWidget;
QStackedLayout *stackedLayout = new QStackedLayout;
stackedLayout->addWidget(firstPageWidget);
stackedLayout->addWidget(secondPageWidget);
stackedLayout->addWidget(thirdPageWidget);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(stackedLayout);
setLayout(mainLayout); QStackedLayout не предоставляет встроенных средств для переключения между страницами. Это обычно выполняется с помощью QComboBox или QListWidget, которые хранят заголовки страниц QStackedLayout. Например:
QComboBox *pageComboBox = new QComboBox;
pageComboBox->addItem(tr("Page 1"));
pageComboBox->addItem(tr("Page 2"));
pageComboBox->addItem(tr("Page 3"));
connect(pageComboBox, &QComboBox::activated,
stackedLayout, &QStackedLayout::setCurrentIndex); При заполнении макета виджеты добавляются во внутренний список. Функция indexOf() возвращает индекс виджета в этом списке. Виджеты могут быть добавлены в конец списка с помощью функции addWidget() или вставлены в заданный индекс с помощью функции insertWidget(). Функция removeWidget() удаляет виджет по заданному индексу из макета. Количество виджетов в макете можно получить, используя функцию count().
Функция widget() возвращает виджет по заданному индексу. Индекс виджета, отображаемого на экране, задаётся currentIndex() и может быть изменён с помощью setCurrentIndex(). Аналогичным образом, отображаемый в данный момент виджет можно получить с помощью функции currentWidget(), и изменить с помощью setCurrentWidget().
Всякий раз, когда текущий виджет в макете изменяется или виджет удаляется из макета, соответственно, излучаются сигналы currentChanged() и widgetRemoved().
См. также QStackedWidget и QTabWidget.
Документация по типам членов
перечисление QStackedLayout::StackingMode
Это перечисление определяет, как макет обрабатывает свои дочерние виджеты относительно их видимости.
| Постоянная | Значение | Описание |
|---|---|---|
QStackedLayout::StackOne |
0 |
Только текущий виджет виден. Это значение по умолчанию. |
QStackedLayout::StackAll |
1 |
Все виджеты видны. Текущий виджет просто поднят наверх. |
Документация свойств
[read-only] count : const int
Это свойство содержит количество виджетов, содержащихся в макете.
Функции доступа:
| virtual int | count() const override |
См. также currentIndex() и widget().
currentIndex : int
Это свойство содержит индекс видимого виджета.
Текущий индекс равен -1, если нет текущего виджета.
Функции доступа:
| int | currentIndex() const |
| void | setCurrentIndex(int index) |
Сигнал уведомления:
| void | currentChanged(int index) |
См. также currentWidget() и indexOf().
stackingMode : StackingMode
определяет способ обработки видимости дочерних виджетов.
Значение по умолчанию — StackOne. Установка свойства в StackAll позволяет использовать макет для наложения виджетов, которые выполняют дополнительный отрисовку поверх других виджетов, например, графических редакторов.
Функции доступа:
| QStackedLayout::StackingMode | stackingMode() const |
| void | setStackingMode(QStackedLayout::StackingMode stackingMode) |
Документация по функциям-членам
QStackedLayout::QStackedLayout(QLayout *parentLayout)
Создает новый QStackedLayout и вставляет его в заданный parentLayout.
QStackedLayout::QStackedLayout(QWidget *parent)
Создает новый QStackedLayout с заданным parent.
Этот макет будет установлен на виджет parent и будет управлять геометрией его дочерних элементов.
QStackedLayout::QStackedLayout()
Создает QStackedLayout без родителя.
Этот QStackedLayout должен быть установлен на виджет позже, чтобы начать работать.
См. также addWidget() и insertWidget().
[signal] void QStackedLayout::currentChanged(int index)
Этот сигнал излучается всякий раз, когда текущий виджет в макете меняется. index указывает индекс нового текущего виджета или -1, если его нет (например, если в QStackedLayout нет виджетов).
Примечание: Сигнал уведомления для свойства currentIndex.
См. также currentWidget() и setCurrentWidget().
[slot] void QStackedLayout::setCurrentWidget(QWidget *widget)
Устанавливает текущий виджет в указанный widget. Новый текущий виджет должен уже содержаться в этом макете.
См. также setCurrentIndex() и currentWidget().
[signal] void QStackedLayout::widgetRemoved(int index)
Этот сигнал излучается всякий раз, когда виджет удаляется из макета. Индекс виджета index передаётся в качестве параметра.
См. также removeWidget().
[virtual] QStackedLayout::~QStackedLayout()
Уничтожает этот QStackedLayout. Обратите внимание, что виджеты макета не уничтожаются.
[override virtual] void QStackedLayout::addItem(QLayoutItem *item)
Переопределяет: QLayout::addItem(QLayoutItem *item).
int QStackedLayout::addWidget(QWidget *widget)
Добавляет заданный widget в конец этого макета и возвращает индекс позиции widget.
Если QStackedLayout пуст перед вызовом этой функции, заданный widget становится текущим виджетом.
См. также insertWidget(), removeWidget() и setCurrentWidget().
QWidget *QStackedLayout::currentWidget() const
Возвращает текущий виджет или nullptr , если в этом макете нет виджетов.
См. также currentIndex() и setCurrentWidget().
[override virtual] bool QStackedLayout::hasHeightForWidth() const
Переопределяет: QLayoutItem::hasHeightForWidth() const.
[override virtual] int QStackedLayout::heightForWidth(int width) const
Переопределяет: QLayoutItem::heightForWidth(int) const.
int QStackedLayout::insertWidget(int index, QWidget *widget)
Вставляет заданный widget в заданный index в этом QStackedLayout. Если index вне диапазона, виджет добавляется в конец (в этом случае возвращается фактический индекс widget).
Если QStackedLayout пуст перед вызовом этой функции, заданный widget становится текущим виджетом.
Вставка нового виджета в индекс, меньший или равный текущему индексу, увеличит текущий индекс, но сохранит текущий виджет.
См. также addWidget(), removeWidget() и setCurrentWidget().
[override virtual] QLayoutItem *QStackedLayout::itemAt(int index) const
Переопределяет: QLayout::itemAt(int index) const.
[override virtual] QSize QStackedLayout::minimumSize() const
Переопределяет: QLayout::minimumSize() const.
[override virtual] void QStackedLayout::setGeometry(const QRect &rect)
Переопределяет: QLayout::setGeometry(const QRect &r).
[override virtual] QSize QStackedLayout::sizeHint() const
Переопределяет: QLayoutItem::sizeHint() const.
[override virtual] QLayoutItem *QStackedLayout::takeAt(int index)
Переопределяет: QLayout::takeAt(int index).
QWidget *QStackedLayout::widget(int index) const
Возвращает виджет по заданному index, или nullptr если виджета в данной позиции нет.
См. также currentWidget() и indexOf().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qstackedlayout.html