2012-11-26 1 views
12

Windows7의 Q ++ Qnd Creator (QML)에 Qt Quick Desktop 응용 프로그램을 작성했습니다. 지금 배포해야하며 qml 파일과 이미지를 숨길 필요가 있습니다. (의미 : 리소스 등에 넣는 것을 의미합니다)C++ 및 QML 응용 프로그램에서 qrc를 사용하는 방법은 무엇입니까?

나는 그것을 할 수있는 좋은 방법이 있음을 읽었습니다. qrc 파일. 나는 그 파일에 대한 설명서를 읽고, 다음과 같습니다 내 응용 프로그램, 하나를 만들어 :

다음 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 파일을 사용해야합니다 :

  • 내 QML 파일에 이미지를 사용 myMain.qml에
  • 을 파일을 QML 가져 오기를 사용하여 myMain.qml 파일
  • 로드

나에게 무슨 문제가 있다고 설명해 주시겠습니까 ?? 그리고 .crc와 qml 모두에서 .qrc를 사용하려면 어떻게해야합니까?

고마워요 :)

+0

QML 코드를 실제로 숨길 방법이 없다는 것을 확신합니다. 리소스 파일을 사용하더라도 코드가 여전히 anyo에 표시됩니다. 당신의 실행 파일을 검사하는 사람, 즉 어떤 방법 으로든 컴파일되거나, 암호화되거나, 바이너리 코드로 변환되지는 않습니다. – 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