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();
}

结果

相关推荐
郝学胜_神的一滴8 小时前
Qt 高级开发 031:QListWidget图标布局实战
c++·qt
Vertira9 小时前
如何对QT开发的软件进行打包[已解决]
开发语言·qt
大智兄10 小时前
128.配置qt(交叉)编译的路径---解决无法编译的问题
qt
Henry Zhu12315 小时前
Qt 元对象系统源码级理解
qt
读书札记202215 小时前
Qt中windeployqt.exe工具的使用:解决使用CMake创建的项目点击exe文件后系统提示0xc000007b的问题
开发语言·qt
luoyayun36116 小时前
Qt + FFmpeg 实战:实现音频格式转换功能
qt·ffmpeg·音频格式转换
Henry Zhu12317 小时前
Qt 信号槽、事件循环与线程通信源码级理解
开发语言·qt
郝学胜-神的一滴17 小时前
CMake 015:日志级别全解析
linux·开发语言·c++·qt·程序人生·软件构建·cmake
数据法师1 天前
QuickSay :基于 Qt 的轻量级快捷短语管理工具
开发语言·qt
小短腿的代码世界1 天前
行情快照与增量更新引擎:Qt在高频交易数据分发中的核心架构——你的行情推送为什么延迟了500ms?
开发语言·qt·架构