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

结果

相关推荐
无小道10 分钟前
Qt-qrc机制简单介绍
开发语言·qt
CodeKwang1 小时前
Qt实战:简易Excel表格 | 附完整源码
qt·excel·qtabwidget·qt控件
C++ 老炮儿的技术栈4 小时前
Qt 编写 TcpClient 程序 详细步骤
c语言·开发语言·数据库·c++·qt·算法
打工哪有不疯的5 小时前
使用 MSYS2 为 Qt (MinGW 32/64位) 完美配置 OpenSSL
c++·qt
LYOBOYI1237 小时前
qtcpSocket详解
c++·qt
无小道8 小时前
Qt——网络编程
开发语言·qt
云中飞鸿9 小时前
VS编写QT程序,如何向linux中移植?
linux·开发语言·qt
草莓熊Lotso9 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
云中飞鸿20 小时前
QTCreator快捷键
qt
十五年专注C++开发1 天前
QStyleItemDelegate:自定义列表控件类神器
qt·model·view·delegate