QStackedWidget 类

QStackedWidget 类提供了一个堆栈窗口小部件,每次只显示一个窗口小部件。 更多...

头文件 #include <QStackedWidget>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QFrame

属性

公共函数

QStackedWidget(QWidget *parent = nullptr)
virtual~QStackedWidget()
intaddWidget(QWidget *widget)
intcount() const
intcurrentIndex() const
QWidget *currentWidget() const
intindexOf(const QWidget *widget) const
intinsertWidget(int index, QWidget *widget)
voidremoveWidget(QWidget *widget)
QWidget *widget(int index) const

公共槽

voidsetCurrentIndex(int index)
voidsetCurrentWidget(QWidget *widget)

信号

voidcurrentChanged(int index)
voidwidgetRemoved(int index)

重写的受保护的函数

virtual boolevent(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 不提供允许用户切换页面的内在方法。这通常通过存储 QComboBoxQListWidgetQStackedWidget 页面标题来完成。例如

    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);

当填充堆叠小部件时,小部件会被添加到内部列表中。 functions() 函数返回小部件在列表中的位置。小部件可以通过 addWidget() 函数添加到列表末尾,或者使用 insertWidget() 函数在给定索引处插入。函数从堆叠小部件中删除小部件。可以通过 functions() 函数获取堆叠小部件中包含的小部件数量。

函数返回给定索引位置的小部件。显示在屏幕上小部件的索引由 functions() 提供并可以通过 setCurrentIndex 函数更改。以类似的方式,使用 currentWidget 函数可以检索当前显示的小部件,并通过 setCurrentWidget 函数修改它。

每当堆叠小部件中的当前小部件更改或从小部件集合中移除一个小部件时,分别会发出 functions() 和 functions() 信号。

另请参阅QStackedLayoutQTabWidget

属性文档

[只读] count : const int

该属性保存堆叠小部件包含的小部件数量

默认情况下,此属性包含值为 0。

访问函数

intcount() const

另请参阅currentIndex() 和 widget

currentIndex : int

该属性保存可见小部件的索引位置

如果没有当前小部件,当前索引是 -1。

由于堆叠最初为空,默认情况下此属性包含值为 -1。

访问函数

intcurrentIndex() const
voidsetCurrentIndex(int index)

通知信号

voidcurrentChanged(int index)

另请参阅currentWidget() 和 indexOf

成员函数文档

[显式] QStackedWidget::QStackedWidget(QWidget *parent = nullptr)

使用指定的 parent 构造一个 QStackedWidget。

另请参阅addWidget() 和 insertWidget()。

[虚拟 noexcept] QStackedWidget::~QStackedWidget()

销毁此堆叠小部件并释放任何分配的资源。

int QStackedWidget::addWidget(QWidget *widget)

将给定的小部件 widget 添加到 QStackedWidget 中并返回索引位置。将 widget 的所有权传递给 QStackedWidget。

在调用此函数之前,如果没有 QStackedWidget,则 widget 成为当前小部件。

另请参阅 insertWidget(),removeWidget() 和 setCurrentWidget().

[信号] void QStackedWidget::currentChanged(int index)

当当前小部件发生变化时,会发出此信号。

参数包含新当前小部件的索引,如果没有新的小部件(例如,如果QStackedWidget中没有小部件),则为-1。

注意:属性 currentIndex 的通知信号。

另请参阅 currentWidget() 和 setCurrentWidget().

QWidget *QStackedWidget::currentWidget() const

返回当前小部件,如果没有子小部件,则返回 nullptr

另请参阅 currentIndex() 和 setCurrentWidget().

[覆盖虚受保护] bool QStackedWidget::event(QEvent *e)

重实现了:QFrame::event(QEvent *e).

int QStackedWidget::indexOf(const QWidget *widget) const

返回指定 widget 的索引,若指定 widget 不是 QStackedWidget 的子项,则返回 -1。

另请参阅currentIndex() 和 widget

int QStackedWidget::insertWidget(int index, QWidget *widget)

在 QStackedWidget 中的指定 index 插入给定 widget。将 widget 的所有权传递给 QStackedWidget。如果 index 超出范围,widget 将被附加到最后(在这种情况下,返回的是 widget 的实际索引)。

如果在调用此函数前 QStackedWidget 是空的,则给定的 widget 成为当前小部件。

在小于或等于当前索引的索引处插入新小部件,将递增当前索引,但保持当前小部件。

另请参阅 addWidget(),removeWidget() 和 setCurrentWidget().

void QStackedWidget::removeWidget(QWidget *widget)

从 QStackedWidget 中移除 widget。即,widget 不被删除,只是从堆叠布局中移除,导致它被隐藏。

注意:widget 的父对象和父小部件将保持为 QStackedWidget。如果应用程序想重用移除的 widget,则建议重新设置它。

另请参阅 addWidget(),insertWidget() 和 currentWidget().

[槽] void QStackedWidget::setCurrentWidget(QWidget *widget)

设置当前小部件为指定的 widget。新的当前小部件必须已经包含在这个堆叠小部件中。

另请参阅 currentWidget() 和 setCurrentIndex()。

QWidget *QStackedWidget::widget(int index) const

返回指定 index 的小部件,如果没有这样的小部件则返回 nullptr

另请参阅currentWidget() 和 indexOf

[信号] void QStackedWidget::widgetRemoved(int index)

每当移除小部件时,都会发出此信号。小部件的 index 作为参数传递。

另请参阅 removeWidget()。

© 2024 Qt 公司有限公司。本文件中包含的文档贡献版权属于其各自的拥有者。本文件提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及相关标志是芬兰的 Qt 公司及其他国家/地区的商标。所有其他商标均属于其各自的所有者。