Класс QStackedLayout
Класс QStackedLayout предоставляет стек виджетов, где только один виджет виден в каждый момент времени. Подробнее...
| Заголовок: | #include <QStackedLayout> |
| qmake: | QT += widgets |
| Наследуется от: | QLayout |
Типы публичного доступа
| Перечисление | StackingMode { StackOne, StackAll } |
Свойства
- count : const int
- currentIndex : int
- stackingMode : StackingMode
Функции публичного доступа
| QStackedLayout() | |
| QStackedLayout(QWidget *parent) | |
| QStackedLayout(QLayout *parentLayout) | |
| ~QStackedLayout() | |
| int | addWidget(QWidget *widget) |
| int | currentIndex() const |
| QWidget * | currentWidget() const |
| int | insertWidget(int index, QWidget *widget) |
| void | setStackingMode(StackingMode stackingMode) |
| StackingMode | stackingMode() const |
| QWidget * | widget(int index) const |
Переопределённые функции публичного доступа
| virtual void | addItem(QLayoutItem *item) |
| virtual int | count() const |
| virtual bool | hasHeightForWidth() const |
| virtual int | heightForWidth(int width) const |
| virtual QLayoutItem * | itemAt(int index) const |
| virtual QSize | minimumSize() const |
| virtual void | setGeometry(const QRect &rect) |
| virtual QSize | sizeHint() const |
| virtual QLayoutItem * | takeAt(int index) |
- 36 функций публичного доступа унаследованы от QLayout
- 31 функция публичного доступа унаследована от QObject
- 17 функций публичного доступа унаследованы от QLayoutItem
Свойства-слоты
| void | setCurrentIndex(int index) |
| void | setCurrentWidget(QWidget *widget) |
- 1 свойство-слот унаследован от QObject
Сигналы
| void | currentChanged(int index) |
| void | widgetRemoved(int index) |
- 2 сигнала унаследованы от QObject
Дополнительные унаследованные члены
- 1 статический член публичного доступа унаследован от QLayout
- 11 статических членов публичного доступа унаследованы от QObject
- 4 защищенных функции унаследованы от QLayout
- 9 защищенных функций унаследованы от QObject
Подробное описание
Класс QStackedLayout предоставляет стек виджетов, где только один виджет виден в каждый момент времени.
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, SIGNAL(activated(int)),
stackedLayout, SLOT(setCurrentIndex(int))); При заполнении макета виджеты добавляются во внутренний список. Функция 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 |
См. также 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.
Функции доступа:
| StackingMode | stackingMode() const |
| void | setStackingMode(StackingMode stackingMode) |
Документация по функциям-членам
QStackedLayout::QStackedLayout()
Создаёт QStackedLayout без родителя.
Этот QStackedLayout должен быть установлен на виджет позже, чтобы начать действовать.
См. также addWidget() и insertWidget().
QStackedLayout::QStackedLayout(QWidget *parent)
Создаёт новый QStackedLayout с заданным родителем parent.
Этот макет установит себя на виджет parent и будет управлять геометрией его дочерних элементов.
QStackedLayout::QStackedLayout(QLayout *parentLayout)
Создаёт новый QStackedLayout и вставляет его в заданный parentLayout.
QStackedLayout::~QStackedLayout()
Удаляет этот QStackedLayout. Обратите внимание, что виджеты макета не удаляются.
[virtual] void QStackedLayout::addItem(QLayoutItem *item)
Переопределено из QLayout::addItem().
int QStackedLayout::addWidget(QWidget *widget)
Добавляет заданный widget в конец этого макета и возвращает индекс widget.
Если QStackedLayout пуст перед вызовом этой функции, заданный widget становится текущим виджетом.
См. также insertWidget(), removeWidget() и setCurrentWidget().
[signal] void QStackedLayout::currentChanged(int index)
Этот сигнал генерируется всякий раз, когда текущий виджет в макете изменяется. index указывает индекс нового текущего виджета или -1, если такого нет (например, если в QStackedLayout нет виджетов).
Примечание: Сигнал уведомления для свойства currentIndex.
См. также currentWidget() и setCurrentWidget().
QWidget *QStackedLayout::currentWidget() const
Возвращает текущий виджет или 0, если в этом макете нет виджетов.
См. также currentIndex() и setCurrentWidget().
[virtual] bool QStackedLayout::hasHeightForWidth() const
Переопределено из QLayoutItem::hasHeightForWidth().
[virtual] int QStackedLayout::heightForWidth(int width) const
Переопределено из QLayoutItem::heightForWidth().
int QStackedLayout::insertWidget(int index, QWidget *widget)
Вставляет заданный widget в заданный index в этом QStackedLayout. Если index выходит за пределы диапазона, виджет добавляется в конец (в этом случае возвращается фактический индекс widget).
Если QStackedLayout пуст перед вызовом этой функции, заданный widget становится текущим виджетом.
Вставка нового виджета в индекс, меньший или равный текущему индексу, увеличит текущий индекс, но сохранит текущий виджет.
См. также addWidget(), removeWidget() и setCurrentWidget().
[virtual] QLayoutItem *QStackedLayout::itemAt(int index) const
Переопределено из QLayout::itemAt().
[virtual] QSize QStackedLayout::minimumSize() const
Переопределено из QLayoutItem::minimumSize().
[slot] void QStackedLayout::setCurrentWidget(QWidget *widget)
Устанавливает текущий виджет на указанный widget. Новый текущий виджет должен уже содержаться в этом макете.
См. также setCurrentIndex() и currentWidget().
[virtual] void QStackedLayout::setGeometry(const QRect &rect)
Переопределено из QLayoutItem::setGeometry().
[virtual] QSize QStackedLayout::sizeHint() const
Переопределено из QLayoutItem::sizeHint().
[virtual] QLayoutItem *QStackedLayout::takeAt(int index)
Переопределено из QLayout::takeAt().
QWidget *QStackedLayout::widget(int index) const
Возвращает виджет по заданному index или 0, если виджета в указанной позиции нет.
См. также currentWidget() и indexOf().
[signal] void QStackedLayout::widgetRemoved(int index)
Этот сигнал генерируется всякий раз, когда виджет удаляется из макета. Индекс виджета index передаётся в качестве параметра.
См. также removeWidget().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qstackedlayout.html