Spec-Zone.ru › Qt 5.13

Класс QStackedLayout

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

Заголовок: #include <QStackedLayout>
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, QOverload<int>::of(&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 Все виджеты видимые. Текущий виджет просто поднят вверх.

Это перечисление было введено или изменено в Qt 4.4.

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

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

Это свойство было добавлено в Qt 4.4.

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

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-5.13/qstackedlayout.html

Spec-Zone.ru

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