m_stackedlayout.cpp文件:
m_stackedlayout::m_stackedlayout(QWidget *parent)
: QWidget(parent)
{
firstPageWidget = new QWidget(this);
firstPageWidget->setStyleSheet("background-color:red");secondPageWidget = new QWidget(this);
secondPageWidget->setStyleSheet("background-color:yellow");
thirdPageWidget = new QWidget(this);
thirdPageWidget->setStyleSheet("background-color:white");
label1 = new QLabel("page1",this);
label2 = new QLabel("page2",this);
label3 = new QLabel("page3",this);
Layout1 = new QVBoxLayout(this);
Layout2 = new QVBoxLayout(this);
Layout3 = new QVBoxLayout(this);
Layout1->addWidget(label1);
Layout2->addWidget(label2);
Layout3->addWidget(label3);
firstPageWidget ->setLayout(Layout1);
secondPageWidget ->setLayout(Layout2);
thirdPageWidget ->setLayout(Layout3);
stackedLayout = new QStackedLayout;
stackedLayout->addWidget(firstPageWidget);
stackedLayout->addWidget(secondPageWidget);
stackedLayout->addWidget(thirdPageWidget);
mainLayout = new QVBoxLayout;
pageComboBox = new QComboBox;
pageComboBox->addItem(tr("Page 1"));
pageComboBox->addItem(tr("Page 2"));
pageComboBox->addItem(tr("Page 3"));
connect(pageComboBox, SIGNAL(activated(int)),stackedLayout, SLOT(setCurrentIndex(int)));
mainLayout->addWidget(pageComboBox);
mainLayout->addLayout(stackedLayout);
setLayout(mainLayout);
}
m_stackedlayout.h文件:
class m_stackedlayout : public QWidget
{
Q_OBJECT
public:
m_stackedlayout(QWidget *parent = 0);
~m_stackedlayout();
private:
QLabel* label1;
QLabel* label2;
QLabel* label3;
QWidget* firstPageWidget;
QWidget* secondPageWidget;
QWidget* thirdPageWidget;
QComboBox* pageComboBox;
QStackedLayout* stackedLayout;
QVBoxLayout* mainLayout;
QVBoxLayout* Layout1;
QVBoxLayout* Layout2;
QVBoxLayout* Layout3;
};
运行结果: