1. 如图, 左边为listwidget,右边为StackedLayout, 通过listwidget的不同选项,可以使右边的不同页显示出来。
2. dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QtGui>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
QListWidget *listWidget;
QStackedLayout *stackedLayout;
QHBoxLayout *mainLayout;
QLabel *label1;
QLabel *label2;
QLabel *label3;
};
#endif // DIALOG_H
3. dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
setWindowTitle("test stackedlayout");
mainLayout = new QHBoxLayout;
label1 = new QLabel("label1");
label2 = new QLabel("label2");
label3 = new QLabel("label3");
listWidget = new QListWidget;
listWidget->addItem(tr("item1"));
listWidget->addItem(tr("item2"));
listWidget->addItem(tr("item3"));
stackedLayout = new QStackedLayout;
stackedLayout->addWidget(label1);
stackedLayout->addWidget(label2);
stackedLayout->addWidget(label3);
connect(listWidget, SIGNAL(currentRowChanged(int)),
stackedLayout, SLOT(setCurrentIndex(int)));
listWidget->setCurrentRow(0);
mainLayout->addWidget(listWidget);
mainLayout->addLayout(stackedLayout);
setLayout(mainLayout);
}
Dialog::~Dialog()
{
delete ui;
}