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

结果

相关推荐
小尧嵌入式1 小时前
QT软件开发知识点流程及记事本开发
服务器·开发语言·数据库·c++·qt
努力学习的小廉1 小时前
【QT(三)】—— 信号和槽
开发语言·qt
mengzhi啊2 小时前
qt自制文本,应该没什么用
qt
神仙别闹2 小时前
基于QT(C++)实现(图形界面)连连看
java·c++·qt
sailing-data2 小时前
【UI Qt】入门笔记
开发语言·qt·ui
mengzhi啊2 小时前
qt自绘制,蜂巢网格,感觉没什么用
qt
Y1rong3 小时前
QT之串口调试助手
qt
小尧嵌入式4 小时前
深入理解C/C++指针
java·c语言·开发语言·c++·qt·音视频
零小陈上(shouhou6668889)4 小时前
增加PyQt5界面的交通流量预测(模型为CNN_GRU,CNN_BiGRU_ATTENTION,LSTM,Python代码)
qt·cnn·gru
繁星蓝雨5 小时前
Qt优雅的组织项目结构一(使用pri进行模块化配置)——————附带详细示例代码
开发语言·qt·pri