Spec-Zone.ru › Qt 5.15

Класс 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)

Этот сигнал излучается всякий раз, когда текущий виджет изменяется.

Параметр содержит индекс нового текущего виджета или -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 в заданный index в QStackedWidget. Владение 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.15/qstackedwidget.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API