Spec-Zone.ru › Qt 6.0

Класс QStackedLayout

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

Заголовок: #include <QStackedLayout>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследует: QLayout
  • Список всех членов, включая наследуемые

Типы

перечисление StackingMode { StackOne, StackAll }

Свойства

  • count : const int
  • currentIndex : int
  • stackingMode : StackingMode

Открытые функции

QStackedLayout(QLayout *parentLayout)
QStackedLayout(QWidget *parent)
QStackedLayout()
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

Открытые слоты

void setCurrentIndex(int index)
void setCurrentWidget(QWidget *widget)

Сигналы

void currentChanged(int index)
void widgetRemoved(int index)

Подробное описание

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, &QComboBox::activated,
            stackedLayout, &QStackedLayout::setCurrentIndex);

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

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

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

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

Документация по типам членов

перечисление QStackedLayout::StackingMode

Это перечисление определяет, как макет обрабатывает свои дочерние виджеты относительно их видимости.

Постоянная Значение Описание
QStackedLayout::StackOne 0 Только текущий виджет виден. Это значение по умолчанию.
QStackedLayout::StackAll 1 Все виджеты видны. Текущий виджет просто поднят наверх.

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

[read-only] 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 позволяет использовать макет для наложения виджетов, которые выполняют дополнительный отрисовку поверх других виджетов, например, графических редакторов.

Функции доступа:

QStackedLayout::StackingMode stackingMode() const
void setStackingMode(QStackedLayout::StackingMode stackingMode)

Документация по функциям-членам

QStackedLayout::QStackedLayout(QLayout *parentLayout)

Создает новый QStackedLayout и вставляет его в заданный parentLayout.

QStackedLayout::QStackedLayout(QWidget *parent)

Создает новый QStackedLayout с заданным parent.

Этот макет будет установлен на виджет parent и будет управлять геометрией его дочерних элементов.

QStackedLayout::QStackedLayout()

Создает QStackedLayout без родителя.

Этот QStackedLayout должен быть установлен на виджет позже, чтобы начать работать.

См. также addWidget() и insertWidget().

[signal] void QStackedLayout::currentChanged(int index)

Этот сигнал излучается всякий раз, когда текущий виджет в макете меняется. index указывает индекс нового текущего виджета или -1, если его нет (например, если в QStackedLayout нет виджетов).

Примечание: Сигнал уведомления для свойства currentIndex.

См. также currentWidget() и setCurrentWidget().

[slot] void QStackedLayout::setCurrentWidget(QWidget *widget)

Устанавливает текущий виджет в указанный widget. Новый текущий виджет должен уже содержаться в этом макете.

См. также setCurrentIndex() и currentWidget().

[signal] void QStackedLayout::widgetRemoved(int index)

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

См. также removeWidget().

[virtual] QStackedLayout::~QStackedLayout()

Уничтожает этот QStackedLayout. Обратите внимание, что виджеты макета не уничтожаются.

[override virtual] void QStackedLayout::addItem(QLayoutItem *item)

Переопределяет: QLayout::addItem(QLayoutItem *item).

int QStackedLayout::addWidget(QWidget *widget)

Добавляет заданный widget в конец этого макета и возвращает индекс позиции widget.

Если QStackedLayout пуст перед вызовом этой функции, заданный widget становится текущим виджетом.

См. также insertWidget(), removeWidget() и setCurrentWidget().

QWidget *QStackedLayout::currentWidget() const

Возвращает текущий виджет или nullptr , если в этом макете нет виджетов.

См. также currentIndex() и setCurrentWidget().

[override virtual] bool QStackedLayout::hasHeightForWidth() const

Переопределяет: QLayoutItem::hasHeightForWidth() const.

[override virtual] int QStackedLayout::heightForWidth(int width) const

Переопределяет: QLayoutItem::heightForWidth(int) const.

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(int index) const.

[override virtual] QSize QStackedLayout::minimumSize() const

Переопределяет: QLayout::minimumSize() const.

[override virtual] void QStackedLayout::setGeometry(const QRect &rect)

Переопределяет: QLayout::setGeometry(const QRect &r).

[override virtual] QSize QStackedLayout::sizeHint() const

Переопределяет: QLayoutItem::sizeHint() const.

[override virtual] QLayoutItem *QStackedLayout::takeAt(int index)

Переопределяет: QLayout::takeAt(int index).

QWidget *QStackedLayout::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.0/qstackedlayout.html

Spec-Zone.ru

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