Spec-Zone.ru › Qt 6.1

Класс QStackedWidget

Класс QStackedWidget предоставляет стек виджетов, где только один виджет виден в данный момент. Подробнее...

Заголовок: #include <QStackedWidget>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
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(const 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, &QComboBox::activated,
            stackedWidget, &QStackedWidget::setCurrentIndex);

При заполнении виджета стека виджеты добавляются во внутренний список. Функция indexOf() возвращает индекс виджета в этом списке. Виджеты можно добавить в конец списка с помощью функции addWidget() или вставить на заданный индекс с помощью функции insertWidget(). Функция removeWidget() удаляет виджет из виджета стека. Количество виджетов, содержащихся в виджете стека, можно получить с помощью функции count().

Функция widget() возвращает виджет по заданному индексу. Индекс виджета, отображаемого на экране, задаётся свойством currentIndex() и может быть изменён с помощью setCurrentIndex(). Аналогичным образом, текущий отображаемый виджет можно получить с помощью функции currentWidget(), и изменить его с помощью функции setCurrentWidget().

Всякий раз, когда текущий виджет в виджете стека изменяется или виджет удаляется из виджета стека, посылаются сигналы currentChanged() и widgetRemoved() соответственно.

См. также QStackedLayout и QTabWidget.

Документация по свойствам

[read-only] 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(const 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-6.1/qstackedwidget.html

Spec-Zone.ru

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