QT5 qss样式表加载 有变量的方式

一、简单的可以直接加载,把样式表放里面就可以了,像这样

    QFile styleFile(":/style/style.qss");
    if(styleFile.open(QIODevice::ReadOnly))
    {
        QString setStyleSheet(styleFile.readAll());
        a.setStyleSheet(setStyleSheet);
        styleFile.close();
    }else
    {
        qDebug("Open failed");
    }

二、稍微处理一下,把里面的变量和注释删掉,这样qss表格写起来就方便很大

        QMap <QString,QString> colorValue;
        QList <QString> key;
        while (setStyleSheet.indexOf("*/") != -1) {//去掉注释
            int i = setStyleSheet.indexOf("/*");
            int j = setStyleSheet.indexOf("*/");
            qDebug()<<setStyleSheet.mid(i,j+2-i);
            setStyleSheet.remove(i,j+2-i);
        }
        while (setStyleSheet.indexOf("$") != -1) {//把变量值记录到容器里
            int i = setStyleSheet.indexOf("$");
            int j = setStyleSheet.indexOf("=");
            int k = setStyleSheet.indexOf(";");
            if(j>k || j==-1){
                break;
            }
            colorValue[setStyleSheet.mid(i,j-i-1)] = setStyleSheet.mid(j+1,k-j-1);
            key<<setStyleSheet.mid(i,j-i-1);
            setStyleSheet.remove(0,k+1);
        }
        for (int i = 0;i<key.length();i++) {//替换原来样式表里的变量为真实值
            while (setStyleSheet.indexOf(key[i]) != -1) {
                setStyleSheet.replace(setStyleSheet.indexOf(key[i]),key[i].length(),colorValue[key[i]]);
            }
        }
        qDebug()<<setStyleSheet;
        a.setStyleSheet(setStyleSheet);
        styleFile.close();
    }
    else
    {
        qDebug("Open failed");
    }
  1. 删掉注释,找出//的位置,把它们直接和本身给删掉
  2. 找出类似这种变量$text = #222;的位置,并记录到容量里面然后删掉,
  3. 把qss文档里面的内容找出变量的位置,类似这种$text,然后替换掉刚才容量里面的
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程详细、全面地介绍了 Qt 开发中的各个技术细节,并且额外赠送在嵌入式端编写Qt程序的技巧。整个课程涵盖知识点非常多,知识模块囊括 Qt-Core 组件、QWidgets、多媒体、网络、绘图、数据库,超过200个 C++ 类的分析和使用,学完之后将拥有 Qt 图形界面开发的非常坚实的功底。 每个知识点不仅仅会通过视频讲解清楚,并且会配以精心安排的实验和作业,用来保证学习过程中切实掌握核心技术和概念,通过实验来巩固,通过实验来检验,实验与作业的目的是发现问题,发现技术盲点,通过答疑和沟通夯实技术技能。注意:本套视频教程来源于线下的实体班级,因此视频中有少量场景对话和学生问答,对此比较介意的亲们谨慎购买。注意:本套视频教程包含大量课堂源码,包含对应每个知识点的精心编排的作业。由于CSDN官方规定在课程介绍中不能出现作者的联系方式,因此在这里无法直接给出QQ答疑号,视频中的源码、资料和作业文档链接统一在购买后从CSDN平台跟我沟通,我会及时回复跟进。注意:本套视频教程包含全套10套作业题,覆盖所有视频知识点,循序渐进,各个击破,作业总纲如下:下面是部分作业题目展示,每道题都有知识点说明,是检验学习效果的一大利器:(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)…… ……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值