Класс 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) | |
| 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 |
- 37 функций публичного доступа унаследовано от 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
Статические члены публичного доступа
| const QMetaObject | staticMetaObject |
- 1 статический член публичного доступа унаследован от 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 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()
Создает QStackedLayout без родителя.
Этот QStackedLayout должен быть установлен на виджет позже, чтобы стать эффективным.
См. также addWidget() и insertWidget().
QStackedLayout::QStackedLayout(QWidget *parent)
Создает новый QStackedLayout с заданным parent.
Этот макет установит себя на виджет parent и будет управлять геометрией своих дочерних элементов.
QStackedLayout::QStackedLayout(QLayout *parentLayout)
Создает новый QStackedLayout и вставляет его в заданный parentLayout.
[virtual] QStackedLayout::~QStackedLayout()
Уничтожает этот QStackedLayout. Обратите внимание, что виджеты макета не уничтожаются.
[override 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().
[override virtual] bool QStackedLayout::hasHeightForWidth() const
Переопределяет QLayoutItem::hasHeightForWidth().
[override 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().
[override virtual] QLayoutItem *QStackedLayout::itemAt(int index) const
Переопределяет QLayout::itemAt().
[override virtual] QSize QStackedLayout::minimumSize() const
Переопределяет QLayout::minimumSize().
[slot] void QStackedLayout::setCurrentWidget(QWidget *widget)
Устанавливает текущим виджетом указанный widget. Новый текущий виджет должен уже содержаться в этом макете.
См. также setCurrentIndex() и currentWidget().
[override virtual] void QStackedLayout::setGeometry(const QRect &rect)
Переопределяет QLayout::setGeometry().
[override virtual] QSize QStackedLayout::sizeHint() const
Переопределяет QLayoutItem::sizeHint().
[override 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.12/qstackedlayout.html