Класс 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
- 32 открытых функции унаследовано от 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/qt-5.9/qstackedlayout.html