示例:
#include<QListWidget>
#include<QStackedWidget>
新建一个QListWidget(this)控件作为标签:
- QListWidget *list=new QListWidget();
新建一个堆栈窗口:
- QStackedWidget stack=new QStackWidget(this);
把用于显示的标签加入,例如QLabel,QTextEdit:
- stack->addWidget(label);
类里面.cpp函数:
#include <QDialog>
#include<QLabel>
#include<QListWidget>
#include<QStackedWidget>
setWindowTitle("stackWindow");
list=new QListWidget(this);
list->insertItem(0,tr("window1"));//清单选项
list->insertItem(1,tr("window2"));
list->insertItem(2,tr("window3"));
label1=new QLabel(tr("堆栈窗口第一层,对应window1"));
label2=new QLabel(tr("堆栈窗口第一层,对应window1"));
label3=new QLabel(tr("third"));
stack1=new QStackedWidget(this);// 堆栈窗口
stack1->addWidget(label1);
stack1->addWidget(label2);
stack1->addWidget(label3);
QHBoxLayout *mainLayout=new QHBoxLayout(this);//布局
mainLayout->setMargin(5);//对话框边距
mainLayout->addWidget(list);
mainLayout->addWidget(stack1,1,Qt::AlignHCenter);//文字居中
mainLayout->setStretchFactor(list,1);//设定list与stack1伸缩1:3
mainLayout->setStretchFactor(stack1,3);
connect(list,SIGNAL(currentRowChanged(int)),stack1,SLOT(setCurrentIndex(int)));
}
信号和槽连接
- connect(list,SIGNAL(currentRowChanged(int)),stack1,SLOT(setCurrentIndex(int)));
将QListWidget的currentRowChange()信号和堆栈窗体的setCurrentIndex(int)槽函数连接起来;此处index为按插入的顺序从0开始排序。比如我们点击window2,它就显示对应window2的内容。