2012-11-26 9 views
12

Ho scritto un'applicazione Qt Quick Desktop in C++ qnd Qt Creator (QML) su Windows7. Ora devo dire che devo distribuirlo e ho bisogno di nascondere i file qml e le immagini (significa: metterli in risorse e così via)Come usare qrc in applicazione C++ e QML?

Ho letto che c'è un ottimo modo per farlo con. file qrc. Ho letto la documentazione su quei file, e ha creato uno per la mia domanda, che assomiglia a questo:

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

Nel main.cpp, sto caricando il file Main.qml come:

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

ho provato a leggere il file myMain.qml dal resources.qrc come:

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

ma ho ottenuto questo errore:

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

e quando ho provato questo:

sto ottenendo questo:

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 

Sembra che la mia Qt non sa cosa fare con : ": /".

devo utilizzare il file .qrc in:

  • Caricamento del file myMain.qml
  • Utilizzando l'importazione in QML file in myMain.qml
  • Utilizzando le immagini nei miei file QML

Potresti spiegarmi cosa c'è che non va ?? e cosa devo fare per usare il .qrc sia in C++ che in qml?

Grazie mille :)

+0

Sono quasi sicuro che non esiste un modo per nascondere effettivamente il codice QML, anche se si utilizza il file di risorse, tale codice è ancora visibile a chiunque ne che ispeziona il tuo eseguibile, cioè non è compilato, crittografato o trasformato in codice binario in alcun modo. – johnbakers

risposta

18

Avete provare questo:

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

Quando si esegue questa operazione:

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

il percorso è "file: /// QML/GenericHostApplicationQML/myMain.qml "

+0

Oh Tnx, funziona !!! e dovresti guidarmi per favore come usarlo nella sorgente immagine qml e in importazione qml? Grazie in anticipo !! – user1835297

+0

qualche idea su come farlo? – user1835297

+0

vuoi leggere direttamente il file qml dal file sorgente locale e non dal file delle risorse? – Kirween