2017-03-09 12 views
0

Qtを使用してMaya 2016のプラグインを構築しようとしていますが、必要な特定のアセットを参照するために相対パスを使用する方法がわかりません。QtベースのAutodesk Mayaプラグインで相対パスを使用する方法は?

私のプラグインのための私のコードの中に、私はQtのデザイナーから作られた私の前に設計され、ダイアログウィンドウが含まれているmy_ui.uiファイルをロードするためにQUiLoaderQFileを使用しています:

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リソースコレクションファイルは自分のアプリケーションの依存関係を一覧表示し、を追加3210行を私の.proファイルに書き出すとqmakeは自分のリソースファイルを最終バイナリにコンパイルするよう指示します。

はその後、私のアプリケーションでは、私は、リソースパスを使用するように私のqfileによりコンストラクタを修正:

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

私はマヤ、開発キットQtの例とQtリソースシステムのマニュアル(http://doc.qt.io/qt-5/resources.html)を見てからこの情報を得ました。

+1

ファイルはプラグインに埋め込まれており、 'QFile'は適切なパスが与えられたときに埋め込みファイルにリダイレクトする仮想ファイルシステムを実装しています。 –

+0

@KubaOberだから、私はQt Resource Systemのドキュメント(http://doc.qt.io/qt-5/resources.html)を見て、私が探していた詳細情報をくれた。ありがとう。 –

関連する問題