2016-12-25 110 views
2

據我所知,qml文件可以從本地目錄路徑加載,也可以捆綁在qrc文件中並使用qrc:/ URI加載。在調試階段,更改本地qml文件不需要重新編譯qrc文件並將其與主要可執行文件鏈接在一起,這是用於嘗試和錯誤微調的快速過程。但在部署階段,應將qml文件作爲qrc文件捆綁在一起並鏈接到主要的C++ Qt應用程序。當你想要單個可執行文件時,這是一個很好的做法,然而編譯qrc文件並重新鏈接它對於大型項目來說是非常耗時的。有什麼辦法可以切換到qrc或本地目錄嗎?例如在調試和發佈模式?在qrc和qml文件的本地路徑之間切換

項目中有許多qml組件,所有這些都是由URI的qrc:/componenentname.qml在另一個qml文件中創建的。

那麼有什麼辦法在調試和發佈模式下交換這兩個狀態,並保持qml文件沒有重複的變化?

回答

5

QML中的所有URL(如果未全部指定)與當前文件相關。

E.g.如果一個QML文件中有這樣的

Image { 
    source: "images/foo.png" 
} 

那麼內容的圖像的完整URL是在運行時根據QML文件本身的基礎URL構建。

I.e.如果QML文件本身是qrc://main.qml,那麼得到的路徑是qrc://images/foo.png,如果QML文件本身是file:///path/to/your/project/main.qml那麼結果圖像源是file:///path/to/your/project/image/foo.png

因此,如果您在QML中的使用情況中保留相對的URL,則可以在加載主QML文件時簡單地在資源文件和本地文件之間切換。

QUrl mainFile = localMode ? QUrl::fromLocalFile("main.qml") : QUrl("qrc://main.qml") 

QQuickView view; 
view.setSource(mainFile); 
相關問題