QT:使用堆叠窗口、标签、下拉条

widget.h

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QStackedWidget>  //堆叠窗口
#include <QComboBox>       //下拉条
#include <QLabel>          //标签

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
private:
    QStackedWidget *sw; //容器,装标签
    QComboBox *cbb;     //下拉条
    QLabel *lb[2];      //两个标签,装两张图片
};

#endif // WIDGET_H

widget.cpp

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

cpp 复制代码
#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

结果

相关推荐
淼淼7631 小时前
Qt调度 程序
开发语言·c++·windows·qt
明飞19872 小时前
QT笔记1
qt
林政硕(Cohen0415)2 小时前
ARM Qt 字体过小的问题
arm开发·qt
追烽少年x2 小时前
Qt中构建多语言程序
qt
rainFFrain4 小时前
QT显示类控件---QSlider
开发语言·qt
扶尔魔ocy8 小时前
【QT window】multimedia+ffmpeg实现(PCM和MP4)录音功能
qt·ffmpeg·pcm
YouEmbedded9 小时前
解码 Qt 交互:滑动交互、窗口拖拽
qt·滑动交互·上滑关闭·滑动显示 / 隐藏
郝学胜-神的一滴9 小时前
使用EBO绘制图形:解锁高效渲染与内存节省之道
c++·qt·游戏·设计模式·系统架构·图形渲染
枫叶丹410 小时前
【Qt开发】Qt事件(一)
c语言·开发语言·数据库·c++·qt·microsoft
刺客xs21 小时前
Qt------信号槽,属性,对象树
开发语言·qt·命令模式