2012-11-26 13 views
12

Ich habe eine Qt Quick Desktop-Anwendung in C++ Qnd Qt Creator (QML) auf Windows7 geschrieben. Jetzt Ich muss es bereitstellen, und ich muss die qml-Dateien und die Bilder verstecken (bedeutet: um sie in Ressourcen und etc.)Wie verwende ich qrc in C++ und QML-Anwendung?

Ich habe gelesen, dass es eine gute Möglichkeit ist, das zu tun. qrc-Dateien. Ich lese die Dokumentation über diese Dateien und erstellt eine für meine Anwendung, die wie folgt aussieht:

<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> 

Im main.cpp, ich lade die Main.qml Datei wie:

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(); 
} 

ich versuchte, die myMain.qml Datei aus dem Resources.qrc zu lesen wie:

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

aber ich habe diesen Fehler bekam:

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

und als ich dieses versucht:

Ich erhalte dieses:

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 

Es scheint, wie meine Qt nicht weiß, was zu tun : ": /"

Ich habe in der .qrc-Datei verwenden:

  • Laden der Datei myMain.qml
  • Import Mit Dateien auf QML in myMain.qml
  • Bilder Mit meiner qml Dateien

Können Sie mir erklären, was los ist ?? und was muss ich tun, um die .qrc in C++ und Qml zu verwenden?

Vielen Dank :)

+0

Ich bin mir ziemlich sicher, dass es keine Möglichkeit gibt, QML-Code wirklich zu verbergen, selbst wenn Sie die Ressourcendatei verwenden, ist dieser Code für anyo immer noch sichtbar ne, die Ihre ausführbare Datei prüft, d. h. sie wird nicht kompiliert, verschlüsselt oder in Binärcode umgewandelt. – johnbakers

Antwort

18

Sie haben dieses versuchen:

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

Wenn Sie dies tun:

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

der Pfad ist „file: /// qml/GenericHostApplicationQML/myMain.qml "

+0

Oh Tnx, es funktioniert !!! und sollten Sie mich bitte wie Sie es in qml Bildquelle und in qml importieren? Vielen Dank !! – user1835297

+0

eine Idee, wie es geht? – user1835297

+0

Sie möchten die qml-Datei direkt aus der lokalen Quelldatei und nicht aus der Ressourcendatei lesen? – Kirween