2012-11-26 51 views
12

我已經在Windows7上用C++ qnd Qt Creator(QML)編寫了Qt Quick Desktop應用程序。現在 我必須部署它,我需要隱藏qml文件和圖像(意味着:把它們放在資源等)如何在C++和QML應用程序中使用qrc?

我讀過,有一個偉大的方式來做到這一點。 qrc文件。我讀到這些文件的文檔,並創建了一個我的應用程序,它看起來像這樣:

<RCC> 
<qresource prefix="/"> 
    <file>qml/GenericHostApplicationQML/myMain.qml</file> 
    <file>qml/GenericHostApplicationQML/content/PressAndHoldButton.qml</file> 
    <file>qml/GenericHostApplicationQML/content/TextButton.qml</file> 
    <file>qml/GenericHostApplicationQML/content/pics/advancedsettings.png</file> 
    <file>qml/GenericHostApplicationQML/content/pics/cnruninstall.png</file> 
    <file>qml/GenericHostApplicationQML/content/pics/dialog_cancel.png</file> 
    <file>qml/GenericHostApplicationQML/content/pics/folder_explore.png</file> 
    <file>qml/GenericHostApplicationQML/content/pics/gnome_session_switch.png</file> 
    <file>qml/GenericHostApplicationQML/content/pics/mail2_send.png</file> 
    <file>qml/GenericHostApplicationQML/content/pics/Picture1.png</file> 
    <file>qml/GenericHostApplicationQML/content/pics/Picture2.png</file> 
</qresource> 

在main.cpp中,我加載的文件Main.qml像:

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QDeclarativeView view; 
    view.setSource(QUrl::fromLocalFile("qml/GenericHostApplicationQML/myMain.qml")); 
    view.show(); 
    return app.exec(); 
} 

我試圖讀取從Resources.qrc的myMain.qml文件,如:

view.setSource(QUrl(":/qml/GenericHostApplicationQML/myMain.qml"));//I added the ":/" 

,但我已經得到這個錯誤:

file:///qml/GenericHostApplicationQML/myMain.qml: File not found 

,當我嘗試這樣做:

我得到這個:

file:///C:/Users/ayalafre/Desktop/ghaQML/GenericHostApplicationQML-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Release/:/qml/GenericHostApplicationQML/myMain.qml: File not found 

好像我的Qt不知道該怎麼辦: 「:/」。

我必須使用.qrc文件:

  • 加載myMain.qml文件
  • 使用進口QML文件myMain.qml
  • 在我的QML文件中使用的圖像

你能向我解釋什麼是錯? 以及我爲了在C++和qml中使用.qrc所做的事情?

感謝很多:)

+0

我很確定沒有辦法隱藏QML代碼,即使您使用資源文件,該代碼仍然可見ne檢查你的可執行文件,即它沒有以任何方式編譯,加密或變成二進制代碼。 – johnbakers

回答

18

你有沒有嘗試這個辦法:

view.setSource(QUrl("qrc:/qml/GenericHostApplicationQML/myMain.qml")); 

當你這樣做:

QUrl(":/qml/GenericHostApplicationQML/myMain.qml"); 

的路徑是「文件:/// QML/GenericHostApplicationQML/myMain.qml「

+0

哦Tnx,它的工作原理! ,你應該引導我請如何使用它在qml圖像源 和qml導入? 謝謝! – user1835297

+0

任何想法如何做到這一點? – user1835297

+0

你想從本地源文件直接讀取qml文件而不是從資源文件中讀取? – Kirween

相關問題