Spec-Zone.ru › Qt 5.13

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

Spec-Zone.ru

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