2017-03-09 49 views
0

我正在嘗試使用Qt爲Maya 2016構建一個插件,我不確定如何使用相對路徑來引用我需要的特定資源。如何在基於Qt的Autodesk Maya插件中使用相對路徑?

裏面我爲我的插件代碼,我使用QUiLoaderQFile加載my_ui.ui文件,其中包含從Qt設計讓我預先設計的對話窗口:

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

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

my_ui.ui在與我編譯的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資源集合文件列出我的應用程序的依賴關係,並添加RESOURCES行到我的.pro文件告訴qmake將我的資源文件編譯成最終的二進制文件。

然後在我的申請,我修改了一個QFile構造函數來使用資源路徑:

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

我得到這個信息從看瑪雅的devkit Qt的例子和Qt資源系統文件(http://doc.qt.io/qt-5/resources.html)。

+1

它們完全按照你所說的:文件被嵌入到插件中,而'QFile'實現了一個虛擬文件系統,當它給出正確的路徑時,它將重定向到嵌入文件。 –

+0

@KubaOber認爲是這樣的,我查看了Qt資源系統文檔(http://doc.qt.io/qt-5/resources.html),並且給了我正在尋找的詳細信息。謝謝。 –