QStackedWidget 是一个特殊的布局容器,它可以管理多个页面,并且只能显示其中一个页面 。这些页面是QWidget或其派生类的实例,并通过调用addWidget()函数添加到堆栈中。
例如:
#include <QWidgets>
#include <QStackedWidget>
#include<QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建堆栈窗体
stackedWidget = new QStackedWidget;
// 创建三个页面并添加到堆栈中
QWidget *page1 = new QWidget;
QVBoxLayout *vbox1 = new QVBoxLayout(page1);
QLabel *label1 = new QLabel("This is page 1");
vbox1->addWidget(label1);
stackedWidget->addWidget(page1);
QWidget *page2 = new QWidget;
QVBoxLayout *vbox2 = new QVBoxLayout(page2);
QLabel *label2 = new QLabel("This is page 2");
vbox2->addWidget(label2);
stackedWidget->addWidget(page2);
QWidget *page3 = new QWidget;
QVBoxLayout *vbox3 = new QVBoxLayout(page3);
QLabel *label3 = new QLabel("This is page 3");
vbox3->addWidget(label3);
stackedWidget->addWidget(page3);
// 设置初始显示页面
stackedWidget->setCurrentIndex(0);
// 显示堆栈窗体
stackedWidget->show();
return a.exec();
}
在这个例子中,创建了一个QStackedWidget对象,并添加了三个页面。每个页面都只有一个标签。然后设置第一个页面为初始显示页面,并最终显示整个堆栈窗体。
还可以使用setCurrentWidget() 函数来切换显示哪个页面,或者使用****indexOf(QWidget*)****函数来获取某个页面在堆栈中的索引。
堆栈窗体QStackedWidget类,在实际应用中,堆栈窗体多与列表框QListWidget 及下拉列表框QComboBox配合使用。
下面通过实例演示QStackedWidget 类的使用
在头文件"stackdlg.h"具体代码如下:
在源文件"stackdlg.cpp"具体代码如下:
运行效果
当选择左侧列表框中不同的选项时,右侧显示所选的不同的窗体。