堆栈窗口也是一类使用广泛的窗口,只不过名字叫起来似乎很高端罢了。
新建一个项目,取消界面选项。类名是stackdlg
接下来在.cpp文件中添加以下代码:
#include "stackdlg.h" #include <QHBoxLayout> StackDlg::StackDlg(QWidget *parent) : QDialog(parent) { setWindowTitle("stackedwidget"); list=new QListWidget(this); list->insertItem(0,"window1"); list->insertItem(1,"window2"); list->insertItem(2,"window3"); label1=new QLabel("window1"); label2=new QLabel("window2"); label3=new QLabel("window3"); stack=new QStackedWidget(this); stack->addWidget(label1); stack->addWidget(label2); stack->addWidget(label3); QHBoxLayout *mainlayout=new QHBoxLayout(this); mainlayout->setMargin(5); mainlayout->setSpacing(5); mainlayout->addWidget(list); mainlayout->addWidget(stack,0,Qt::AlignCenter); mainlayout->setStretchFactor(list,1); mainlayout->setStretchFactor(stack,3); connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int))); } StackDlg::~StackDlg() { }
运行后的结果:
当然,添加一些必要的头文件是必须的,就省略了。