Класс QStackedWidget
Класс QStackedWidget предоставляет стек виджетов, где только один виджет виден в данный момент. Подробнее...
| Заголовок: | #include <QStackedWidget> |
| qmake: | QT += widgets |
| Наследуется от: | QFrame |
Свойства
- count : const int
- currentIndex : int
Открытые функции
| QStackedWidget(QWidget *parent = nullptr) | |
| virtual | ~QStackedWidget() |
| int | addWidget(QWidget *widget) |
| int | count() const |
| int | currentIndex() const |
| QWidget * | currentWidget() const |
| int | indexOf(QWidget *widget) const |
| int | insertWidget(int index, QWidget *widget) |
| void | removeWidget(QWidget *widget) |
| QWidget * | widget(int index) const |
Открытые слоты
| void | setCurrentIndex(int index) |
| void | setCurrentWidget(QWidget *widget) |
Сигналы
| void | currentChanged(int index) |
| void | widgetRemoved(int index) |
Переопределённые защищённые функции
| virtual bool | event(QEvent *e) override |
Подробное описание
QStackedWidget может использоваться для создания пользовательского интерфейса, аналогичного тому, что предоставляет QTabWidget. Это виджет-макет удобства, построенный поверх класса QStackedLayout.
Как и QStackedLayout, QStackedWidget может быть создан и заполнен несколькими дочерними виджетами («страницами»):
QWidget *firstPageWidget = new QWidget;
QWidget *secondPageWidget = new QWidget;
QWidget *thirdPageWidget = new QWidget;
QStackedWidget *stackedWidget = new QStackedWidget;
stackedWidget->addWidget(firstPageWidget);
stackedWidget->addWidget(secondPageWidget);
stackedWidget->addWidget(thirdPageWidget);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(stackedWidget);
setLayout(layout); QStackedWidget не предоставляет встроенных средств для переключения страниц пользователем. Это обычно делается с помощью QComboBox или QListWidget, которые хранят заголовки страниц QStackedWidget. Например:
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),
stackedWidget, &QStackedWidget::setCurrentIndex); При заполнении виджета стека виджеты добавляются во внутренний список. Функция indexOf() возвращает индекс виджета в этом списке. Виджеты могут быть добавлены в конец списка с помощью функции addWidget() или вставлены в заданный индекс с помощью функции insertWidget(). Функция removeWidget() удаляет виджет из стека виджетов. Количество виджетов, содержащихся в виджете стека, можно получить с помощью функции count().
Функция widget() возвращает виджет в заданной позиции индекса. Индекс виджета, отображаемого на экране, задаётся свойством currentIndex() и может быть изменён с помощью setCurrentIndex(). Аналогичным образом, текущий отображаемый виджет можно получить с помощью функции currentWidget(), и изменить её с помощью функции setCurrentWidget().
Всякий раз, когда текущий виджет в стеке виджетов изменяется или виджет удаляется из стека виджетов, соответственно, генерируются сигналы currentChanged() и widgetRemoved().
См. также QStackedLayout и QTabWidget.
Документация по свойствам
count : const int
Это свойство содержит количество виджетов, содержащихся в этом виджете стека.
По умолчанию это свойство содержит значение 0.
Функции доступа:
| int | count() const |
См. также currentIndex() и widget().
currentIndex : int
Это свойство содержит позицию индекса виджета, который отображается.
Текущий индекс равен -1, если нет текущего виджета.
По умолчанию это свойство содержит значение -1, так как стек изначально пуст.
Функции доступа:
| int | currentIndex() const |
| void | setCurrentIndex(int index) |
Сигнал уведомления:
| void | currentChanged(int index) |
См. также currentWidget() и indexOf().
Документация по функциям-членам
QStackedWidget::QStackedWidget(QWidget *parent = nullptr)
Конструирует QStackedWidget с указанным parent.
См. также addWidget() и insertWidget().
[signal] void QStackedWidget::currentChanged(int index)
Этот сигнал генерируется всякий раз, когда текущий виджет изменяется.
Параметр содержит index нового текущего виджета или -1, если такого нет (например, если в QStackedWidget нет виджетов).
Примечание: Сигнал уведомления для свойства currentIndex.
См. также currentWidget() и setCurrentWidget().
[slot] void QStackedWidget::setCurrentWidget(QWidget *widget)
Устанавливает текущий виджет в указанный widget. Новый текущий виджет должен уже содержаться в этом виджете стека.
См. также currentWidget() и setCurrentIndex().
[signal] void QStackedWidget::widgetRemoved(int index)
Этот сигнал генерируется при удалении виджета. Индекс виджета index передаётся в качестве параметра.
См. также removeWidget().
[virtual] QStackedWidget::~QStackedWidget()
Удаляет этот виджет стека и освобождает все выделенные ресурсы.
int QStackedWidget::addWidget(QWidget *widget)
Добавляет указанный widget в QStackedWidget и возвращает позицию индекса. Владение widget передаётся QStackedWidget.
Если QStackedWidget пуст до вызова этой функции, widget становится текущим виджетом.
См. также insertWidget(), removeWidget() и setCurrentWidget().
QWidget *QStackedWidget::currentWidget() const
Возвращает текущий виджет или nullptr , если нет дочерних виджетов.
См. также currentIndex() и setCurrentWidget().
[override virtual protected] bool QStackedWidget::event(QEvent *e)
Переопределяет: QFrame::event(QEvent *e).
int QStackedWidget::indexOf(QWidget *widget) const
Возвращает индекс данного widget, или -1, если данный widget не является дочерним элементом QStackedWidget.
См. также currentIndex() и widget().
int QStackedWidget::insertWidget(int index, QWidget *widget)
Вставляет данный widget в QStackedWidget по указанному index. Владение widget передается QStackedWidget. Если index выходит за пределы диапазона, widget добавляется в конец (в этом случае возвращается фактический индекс widget).
Если QStackedWidget был пустым до вызова этой функции, данный widget становится текущим.
Вставка нового виджета по индексу, меньше или равно текущему индексу, увеличит текущий индекс, но текущий виджет сохранится.
См. также addWidget(), removeWidget() и setCurrentWidget().
void QStackedWidget::removeWidget(QWidget *widget)
Удаляет widget из QStackedWidget. Т.е., widget не удаляется, а просто удаляется из стекового макета, что приводит к его скрытию.
Примечание: Объект-родитель и виджет-родитель widget останутся QStackedWidget. Если приложение хочет повторно использовать удаленный widget, рекомендуется перепривязать его к новому родителю.
См. также addWidget(), insertWidget() и currentWidget().
QWidget *QStackedWidget::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.13/qstackedwidget.html