QT qss资源文件与代码分离
在最近的Qt相关项目开发中,有不同客户提出更改logo图片的需求,每次更换一张图片需要重新添加到.qrc资源文件,并重新编译源代码生产可执行文件,操作效率极低,频繁修改源代码也 容易引起其他不可靠问题,故想把部分做成动态加载的形式。在网络上查阅相关资料后解决了这一问题,总结一下以便以后参考查阅。
我们大家都知道,在qt框架中,资源文件后缀名是以.qrc结尾的。它可以将我们的图片文件、qml、与样式表文件等装进可执行程序中。我们将怎样做呢?一般情况下,我们在Qt Creator项目右键添加新文件,选择Qt Resource File。之后输入名字,项目中就有资源管理文件了。
.qrc文件里是以xml格式管理资源文件的,如下:
.qrc文件里是以xml格式管理资源文件的,如下:
<RCC>
<qresource prefix="/images">
<file alias="icon">images/logo.ico</file>
<file alias="title">images/title.png</file>
<file alias="closeBtn">images/gb1.png</file>
</qresource>
<qresource prefix="/qss">
<file alias="stylesheet">stylesheet.qss</file>
</qresource>
<qresource prefix="/SearchItem">
<file alias="SearchItemFile">SearchItem/SearchItemColor.dat</file>
</qresource>
</RCC>
这里面有三种文件:图片(图标)、.qss(样式表)、.dat文件格式。
使用的时候我们有两种方式:
:/images/title.png (eg: QPixmap image0("://image/navigation.png"); QPixmap image = image0.scaled(QSize(pt2px(64), pt2px(64)));QIcon icon = QIcon(image);)
qrc:///images/title.png </span>
此路径就是图片文件在qrc文件中的路径。
为了更好地保护我们的图片安全,我们应该尽可能的将项目的功能源码与资源文件分离开来,如果只是改变图标之类的改变,就不需要重新编译源代码了。具体我们该怎样做呢?
1.使用QT Creator 新建一个资源文件.qrc。这时候,这个资源文件并不是属于任何项目的。
2.在.qrc存放的目录下新建images文件夹(用于存放项目所有的图片)与styleSheet文件夹(用于存放样式表文件.qss)。
(文件存放的路径可自定义)
3.用qt creator打开resource.qrc,然后将images文件夹与qss文件夹里的所有文件添加到qrc文件里。
4.使用rcc 命令将resource.qrc生成.rcc二进制文件。
rcc --binary resource.qrc -o skin.rcc(Windows) (Linux下执行命令为rcc -binary resource.qrc -o skin.rcc)
至此,我们的资源文件已经分离开并且已经做成了二进制文件。那么程序中怎样使用的呢?
5.在项目的可执行目录下新建skin文件夹。将生成的skin.rcc放到skin文件夹里。
6.在qt程序启动的时候,加载一下资源文件
QResource::registerResource(qApp->applicationDirPath() + "/skin/skin.rcc");
QFile file(":/qss/stylesheet");
if(file.open(QFile::ReadOnly))
{
QString strStyleSheet = file.readAll();
file.close();
qApp->setStyleSheet(strStyleSheet);
}
好了,到这里我们就完成了所有工作,将资源文件与源码文件完全分离开来,如果只是更换资源文件,就不用重新编译主程序了,只需重新生成skin.rcc文件,然后替换一下就大功告成了!
以上方法亲测可行,感谢网友分享!文章原地址:https://blog.csdn.net/xiezhongyuan07/article/details/79396680
QT qss资源文件与代码分离的更多相关文章
- qt qrc 资源文件
qt qrc 资源文件 qt qrc 资源文件 qt qrc 资源文件
- Qt 添加资源文件
*本人乃小白,博文主要用于个人记录,不保证内容准确无误* 我们编写的gui可能需要一些额外的资源(比如贴图用的图片),可用资源文件统一管理.以下以图片为例. 用qt creator 打开工程,为工程新 ...
- qt 创建资源文件
我们编写的gui可能需要一些额外的资源(比如贴图用的图片),可用资源文件统一管理.以下以图片为例. 用qt creator 打开工程,为工程新建资源文件: 命名为“项目名.prc”,(此处为“cloc ...
- vs+qt使用资源文件
1.在Resources目录新建一个.qrc文件 2.在解决方案的Resource Files中添加这个文件 3.为这个qrc添加资源,建议把资源都放进Resources
- QT添加资源文件,并为工具栏添加图片
1.右键工程,添加新文件,QT,QT Resource File. 2.选择res,添加前缀,添加文件,(把图片放在文件夹里,把文件夹放在工程目录下)选择图片 3.在ui中,下方有个Action Ed ...
- qt添加资源文件方法
File->new file->file and classes->Qt->qt resources-> add name add->add prefix- ...
- [转] 解析Qt资源文件使用
解析Qt资源文件使用 转自:http://mobile.51cto.com/symbian-270121.htm 本文详细的介绍了Qt文件的使用,和大部分GUI框架设计工具一样,Qt也引入了资源文件系 ...
- 如何在Qt资源文件中包含和释放exe等各种类型文件?
操作系统:Windows 10 X64 企业版 Qt: 5.8.0 QtCreater: 4.2.1 刚刚开始学习Qt,不断遇到困难和挑战,前几天在各个QQ群里询问如何在Qt的资源文件中包含和释放ex ...
- Windows下 Qt 资源文件(.qrc)文件 的 编写与应用
最近遇到一些项目都包含了qrc文件,这个是Qt的资源文件,如果在pro文件中不包含的话,在编译的时候会提示找不到相应资源的错误. 下面说一下手动修改pro和编写qrc文件的方法. 我们直接在命令行下执 ...
随机推荐
- linux 笔记 第一天
打开终端:ctrl+alt+t 清屏:ctrl+l 在终端在退出锁定:ctrl+c 目录:又称为文件夹,是包含所有的文件 目录创建规则: 1.大小是256 2.不能包含特殊字符 3.见名知义 路径:是 ...
- EF:分页查询 + 条件查询 + 排序
/// <summary> /// linq扩展类---zxh /// </summary> /// <typeparam name="T">& ...
- Python学习笔记(Ⅱ)——循环/选择/函数
一.循环结构 python中提供了for循环和while循环两种操作,没有do……while语句. 1.for循环: 与其他语言中for循环的常见的写法如for (int i=0;i<10;i+ ...
- 从Redis中删除大集合对象的方法
Redis中的大集合对象,如set.zset等,如果有上千万个元素,一般是不能直接用del命令来删除的,因为del命令可能会耗时几秒钟,而redis本身是单线程的,在高并发的情况下会阻塞大量的请求,严 ...
- office全系列激活脚本-改良版.cmd
@ECHO OFFTITLE office 全版本系统激活@echo offfor /l %%a in (8,1,16) do (for /f "tokens=*" %%i in ...
- Mysql 版本号、存储引擎、索引查询
[1]Mysql 版本号.存储引擎.索引查询 # 查看数据库版本号 SELECT VERSION(); # 查看数据库支持的引擎(默认即Support == DEFAULT行) SHOW ENGINE ...
- vue图片onerror加载路径写法
vue里,img加载错误的时候,onerror属性可以加载错误图片的默认图片写法如下: <img class=avator' :src="data.picture" :one ...
- mysql之统一刷表
统一刷表: update report set pdfPath= CONCAT(pdfPath ,substring_index(fileLink, '\\', -1)); update report ...
- mysql恢复备份数据时,部分表数据丢失的问题
原因:是由于默认的通信缓冲区的最大长度为50M(max_allowed_packed). 处理办法: //查看当前max_allowed_packet的大小 show global variables ...
- Linux性能优化-理解平均负载
1 平均负载含义 当系统变慢的时候,我们一般使用 top 或 uptime 命令来查看系统平均负载情况. 正确定义:单位时间内,系统中处于可运行状态和不可中断状态的平均进程数.错误定义:单位时间内的c ...