2015-02-07 8 views
3

나는 여러 개의 파일을 가진 프로젝트를 가지고 있습니다. QML. 모두 내부 리소스 파일입니다. 이제 로컬 파일 시스템에서 외부 이미지를로드하려고합니다. 그러나 나는 그렇게 할 수있는 방법을 찾을 수 없습니다.리소스 내부의 파일은 로컬 파일을 찾을 수 없습니다.

Image { 
    source: "images/image.png" // that tries to load file as 'qrc:/images/image.png' 
    source: "file://images/image.png" // that does not work (file not found) 
} 

이제 약간 혼동 스럽습니다. 어떻게 파일을 올바르게로드 할 수 있습니까?

답변

5

QML 엔진은 Qt 리소스 시스템에 저장된 QML 파일에서 주소 지정된 상대 경로가 해당 리소스 파일 내에서 확인되는 것으로 가정합니다. 그래서 QML 파일은 자원에 당신은 당신이 C++에서의 경로 설정해야합니다 응용 프로그램 디렉토리 경로에있는 파일에 액세스하려면 :

engine.rootContext()->setContextProperty("applicationPath", "file://"+qApp->applicationDirPath()+ "/"); 

는 이제 QML에서 파일을 해결할 수 :

Image { 
    source: applicationPath + "images/image.png" 
} 
+1

나는 이것을 최근에 발견했으며 이것은 정답이다. 또한 http://doc.qt.io/qt-5/qml-url.html에 링크하여 "인용 부호가있는 구성 요소의 URL을 기준으로 상대 URL이 결정됩니다." "QML의 모든 상대 경로도 해당 리소스 파일 내에서 확인되어야합니다."라고 말하면서 리소스 파일에만 국한되지 않기 때문에 오해의 소지가 있습니다. – Mitch

+0

@Mitch 당신 말이 맞아요. 나는 그것을 조금 바꿨다. – Nejat

+0

감사합니다. @Nejat. 주로 QML만으로 솔루션을 찾고 있었지만, 리소스를 기반으로 앱과 관련된 URL을 설정하는 것은 불가능합니다. – folibis