Класс QStackedLayout
Класс QStackedLayout предоставляет стек виджетов, где только один виджет виден в данный момент. Подробнее...
| Заголовок: | #include <QStackedLayout> |
| 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, QOverload<int>::of(&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 |
Все виджеты видны. Текущий виджет просто поднят вверх. |
Это перечисление было введено или изменено в Qt 4.4.
Документация свойств
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 позволяет использовать макет для наложения виджетов, которые выполняют дополнительный вывод поверх других виджетов, например, графических редакторов.
Это свойство было введено в Qt 4.4.
Функции доступа:
| 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-5.15/qstackedlayout.html