widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QStackedWidget> //堆叠窗口
#include <QComboBox> //下拉条
#include <QLabel> //标签class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();
private:QStackedWidget *sw; //容器,装标签QComboBox *cbb; //下拉条QLabel *lb[2]; //两个标签,装两张图片
};#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QVBoxLayout>
#include <QHBoxLayout>Widget::Widget(QWidget *parent): QWidget(parent)
{setWindowTitle("堆叠窗口");sw = new QStackedWidget(this); //创建堆叠窗口sw->setFixedSize(640,480); //设置窗口大小QStringList picFileList = {":/pictures/1.jpg",":/pictures/2.jpg"}; //保存图片路径信息for(int i = 0;i < 2;i++){lb[i] = new QLabel(this); //创建标签lb[i]->setFixedSize(640,480); //设置标签大小lb[i]->setScaledContents(true); //设置自适应大小lb[i]->setPixmap((QPixmap(picFileList.at(i)))); //在标签中装入picFileList中索引为i的对应图片sw->addWidget(lb[i]); //容器中添加2个标签}sw->setCurrentIndex(0); //堆叠窗口设置当前索引为0,运行后显示的是第一个标签的图片cbb = new QComboBox(this); //创建下拉条for(int i = 0;i < 2;i++){cbb->addItem(QIcon(picFileList[i]),picFileList.at(i)); //添加条目,包括图片图标,图片路径}//cbb->addItems(picFileList);QHBoxLayout *hb = new QHBoxLayout();hb->addStretch(); //弹簧hb->addWidget(cbb); //设置在中间位置hb->addStretch();QVBoxLayout *vb = new QVBoxLayout();vb->addWidget(sw);vb->addLayout(hb);setLayout(vb);connect(cbb,QOverload<int>::of(&QComboBox::currentIndexChanged),[=](int index){ //有重载,需要确定使用带哪个参数的函数sw->setCurrentIndex(index); //下拉条索引改变时触发容器当面页面改变});
}Widget::~Widget()
{}
main.cpp
#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
结果