//.h
#ifndef STACKDLG_H
#define STACKDLG_H
#include
#include
#include
#include
#include
class stackdlg : public QDialog
{
Q_OBJECT
public:
stackdlg(QWidget *parent = 0,Qt::WindowFlags f1=0);
~stackdlg();
private:
QLabel *label1;//声明QLabel类的对象
QLabel *label2;
QLabel *label3;
QTextEdit *textEdit1;//声明QTextEdit类的对象
QTextEdit *textEdit2;
QTextEdit *textEdit3;
QComboBox *comboBoxList;//声明comboBoxList组合框
QStackedWidget *stackLabel;
QStackedWidget *stackText;
};
#endif // STACKDLG_H
//main.cpp
#include
#include "stackdlg.h"
#include
int main(int argc, char *argv[])
{ QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QApplication a(argc, argv);
stackdlg w;
w.show();
return a.exec();
}
stackdlg.cpp
#include "stackdlg.h"
#include
#include
#include
stackdlg::stackdlg(QWidget *parent,Qt::WindowFlags f1)
: QDialog(parent,f1)
{
setWindowTitle(tr("栈窗口"));
comboBoxList=new QComboBox(this);//创建一个组合框(comboBoxList)
comboBoxList->insertItem(0,tr("窗口1"));//添加3个条目,第一个参数是条目的索引值,第二个为条目内容
comboBoxList->insertItem(1,tr("窗口2"));
comboBoxList->insertItem(2,tr("窗口3"));
label1=new QLabel(tr("这是窗口1!"));//创建标签
label2=new QLabel(tr("这是窗口2!"));
label3=new QLabel(tr("这是窗口3!"));
textEdit1=new QTextEdit(tr("第一个窗口。"));//创建多行文本输入框
textEdit2=new QTextEdit(tr("第二个窗口。"));
te xtEdit3=new QTextEdit(tr("第三个窗口。"));
//创建两个栈部件
stackLabel=new QStackedWidget(this);
stackLabel->addWidget(label1);
stackLabel->addWidget(label2);
stackLabel->addWidget(label3);
stackText=new QStackedWidget(this);
stackText->addWidget(textEdit1);
stackText->addWidget(textEdit2);
stackText->addWidget(textEdit3);
QHBoxLayout *layoutH1=new QHBoxLayout();//水平布局管理器
layoutH1->addStretch();
layoutH1->addWidget(comboBoxList);
QVBoxLayout *mainLayout=new QVBoxLayout(this);//垂直布局管理器
mainLayout->setMargin(25);
mainLayout->setSpacing(25);
mainLayout->addLayout(layoutH1);//延伸因子为1
mainLayout->addWidget(stackLabel);
mainLayout->addWidget(stackText);
//通过setStretchFactor设置comboBoxList、stackLabel、stackText拉伸比例1:1:3
mainLayout->setStretchFactor(comboBoxList,1);
mainLayout->setStretchFactor(stackLabel,1);
mainLayout->setStretchFactor(stackText,3);
//将comboBoxList和stackLabel进行连接
//单击stackLabel弹出窗口
connect(comboBoxList,SIGNAL(currentIndexChanged(int)),stackLabel,SLOT(setCurrentIndex(int)));
//单击stackText弹出窗口
connect(stackLabel,SIGNAL(currentChanged(int)),stackText,SLOT(setCurrentIndex(int)));
}
stackdlg::~stackdlg()
{
}