QML是可以通过编译为二进制代码来加速启动的,同时编译QML兼具保护源代码的效果。 以下的实例是经过与老外讨论总结出来的,测试通过:
1. 项目根目录新建文件qrc-assets.qrc 内容为: <!DOCTYPE RCC> <RCC version="1.0"> <qresource> <file>assets/main.qml</file> <file>assets/common/mycomponent.qml</file>
... </qresource> </RCC>
关键点:包含 所有qml文件。不支持通配符
2. 修改.pro文件,最后加入: RESOURCES += qrc-assets.qrc DEPENDPATH += assets
3.修改bar-descriptor.xml,以过滤 *.qml 把"<asset path="assets">assets</asset>"改成如下
<asset path="assets" dest="assets"> <exclude name="**/*.qml"/> </asset>
4. 最后需要修改qml、cpp文件 QML: import "Common" //这样的路径不用动 import "../Common" qml里面引用qml文件可以不用动,可以这样: source : "about.qml"
如果图像 是这样就不行: imageSource : "images/icon_vibro.png" 是绝对路径就不用改: imageSource : "asset:///images/icon_vibro.png" imageSource: "file:///accounts/1000/...../images/icon_vibro.png" 注意asset没有s
CPP: QmlDocument *qml = QmlDocument ::create( "asset:///main.qml" ).parent( this ); 改成: QmlDocument *qml = QmlDocument ::create( "qrc:/assets/main.qml" ).parent( this ); (注意asset加个s)
如果图像 是这样就不行: btnSensorSwitch -> setImageSource ( QUrl ( "images/icon_stop.png" )); 是绝对路径就不用改: btnSensorSwitch -> setImageSource ( QUrl ( "asset:///images/icon_stop.png" ));
shared/documents/这类的不用改