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/這類的不用改