2017-03-09 1 views
0

Qt를 사용하여 Maya 2016 용 플러그인을 빌드하려고하는데, 상대 경로를 사용하여 필요한 특정 애셋을 참조하는 방법을 모르겠습니다. 내 플러그인에 대한 내 코드 내부 Qt 기반 Autodesk Maya 플러그인에서 상대 경로를 사용하는 방법은 무엇입니까?

, 나는 Qt는 디자이너로 만들어 내 미리 디자인 된 대화 창을 포함하는 my_ui.ui 파일을로드 QUiLoaderQFile을 사용하고 다음 my_ui.ui가에

QUiLoader loader; 
QFile  file("my_ui.ui"); 

file.open(QFile::ReadOnly); 
fForm = loader.load(&file, this); 
file.close(); 

내 컴파일 된 plugin.so 플러그인과 동일한 디렉토리 (Linux를 사용하고 있습니다).

어떤 종류의 상대 경로 지정 (./, .)을 사용하면 Maya가 어디에서 실행되었는지 위치를 알 수 있습니다. 하지만 내 .so 플러그인 자체의 경로를 얻을 수있는 방법이 있습니까?

답변

1

내가 내 자신의 솔루션을 알아 낸 : 내 Qt는 프로젝트 .pro 파일에서

을, 나는 다음과 같은 라인을 추가 :

FORMS += my_ui.ui 
RESOURCES += my_ui.qrc 

을 그리고 난이 포함 된 새 파일, my_ui.qrc을 추가 :

<!DOCTYPE RCC><RCC version="1.0"> 
<qresource> 
    <file>my_ui.ui</file> 
</qresource> 
</RCC> 

.qrc 자원 수집 파일 내 응용 프로그램의 종속성을 나열하고추가3210 줄부터 내 .pro 파일은 qmake에게 내 리소스 파일을 최종 바이너리로 컴파일하도록 지시합니다.

QFile  file(":/my_ui.ui"); 

내가 마야 devkit Qt는 예와 Qt는 자원 시스템 문서 (http://doc.qt.io/qt-5/resources.html)보고에서이 정보를 가지고 :

그런 다음 내 응용 프로그램에서 나는 자원 경로를 사용하는 내 Qfile을 생성자를 수정했습니다.

+1

그들은 당신이 말한 것과 정확하게 일치합니다 : 파일은 플러그인에 내장되어 있고'QFile'은 적절한 경로가 주어지면 임베디드 파일로 리다이렉트하는 가상 파일 시스템을 구현합니다. –

+0

@KubaOber 생각해 보니, Qt Resource System 문서 (http://doc.qt.io/qt-5/resources.html)를보고 나에게 내가 원하는 세부 정보를 주었다. 감사. –

관련 문제