QML 高效开发之加载方式

背景

日常使用 QML开发软件过程中,默认使用 qrc 存在开发效率慢问题,比如每次修改界面内容后需要先构建才能看到实际效果,尤其在频繁调试界面样式时显得更繁琐

原理

Qt 中的资源分为两类,编译型外部二进制资源

编译型资源每次更改后都需要构建才能生效。QML 作为一种特殊的资源文件,每次改动后qrc无法感知是否修改,构建后才会更新对应的数据内容(如图所示)
在这里插入图片描述

其它资源文件比如图片等,原理类似

比如你在程序中使用了某张图片,需求变化需要更新某张图片,你直接拷贝替换后直接运行程序,发现未生效,找了半天问题,最后构建后发现神奇的好了

解决方案

知道了问题原因,那就可以对症下药。简而言之,跳过 编译型 qrc方式,直接从本地路经加载 QML 资源,比如

  • 开发阶段:
qmlRes = file:///D:/code/src/KQML/App.qm
QQmlApplicationEngine engine;
engine.load(qmlRes);
  • 正式发布阶段
qmlRes = "C:/kchat/cfg/KSkinRes.rcc"
QResource::registerResource(qmlRes);
engine.load(qmlRes);

上面的 KSkinRes.rcc 文件是通过 Qtrcc 工具编译生成的二进制文件

完整示例解决方案

详细实现可以阅读文章:

详细实现过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值