Класс 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 |
- 36 открытых функций унаследовано от QLayout
- 34 открытых функции унаследовано от QObject
- 17 открытых функций унаследовано от QLayoutItem
Открытые слоты
| void | setCurrentIndex(int index) |
| void | setCurrentWidget(QWidget *widget) |
- 1 открытый слот унаследован от QObject
Сигналы
| void | currentChanged(int index) |
| void | widgetRemoved(int index) |
- 2 сигнала унаследованы от QObject
Дополнительные унаследованные члены
- 1 общедоступная переменная, унаследованная от QObject
- 1 статический общедоступный член, унаследованный от QLayout
- 10 статических общедоступных членов, унаследованных от QObject
- 4 защищённых функций, унаследованных от QLayout
- 9 защищённых функций, унаследованных от QObject
- 2 защищённых переменных, унаследованных от 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.
Документация по типам членов
enum 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/archives/qt-5.11/qstackedlayout.html