2012-11-26 10 views
12

私は、Windows7上のC++ qnd Qt Creator(QML)でQtクイックデスクトップアプリケーションを作成しました。今すぐ 私はそれを展開しなければなりません、qmlファイルと画像を隠す必要があります(手段:リソースなどに入れてください)C++とQMLアプリケーションでqrcを使用するには?

私はこれを行うには良い方法があると読んだことがあります。 qrcファイル。私はそれらのファイルについてのドキュメントを読み、次のようになります私のアプリケーションのための1を作成しました:

:main.cppには

<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.qmlファイルをロードしています

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

が、私はしました:

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ファイルを読み込もうとしましたこのエラーました:

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コードを実際に隠す方法がないことは確かです。リソースファイルを使用していても、そのコードはまだ誰にでも見えますつまり、コンパイルされていないか、暗号化されていないか、バイナリコードに変換されていません。 – 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

    関連する問題