loadUI コマンドの使用方法
 
 
 

Qt の Designer ツールを使用すると、インタフェースをインタラクティブに作成して移植可能な XML フォーマットで保存できます。Maya には、 というコマンドがあり、MEL や Python のスクリプトで使用してこのようなファイルを Maya にロードし、可能な場合は Maya の標準コントロールに変換できます。

以下の図に、Qt Designer を使用して作成した、コンボボックス、テキスト フィールド、関連ラベル、下に 2 つのボタンを配置したボタン ボックスで構成された単純なダイアログを示します。

このダイアログをファイル /home/autodesk/createDialog.ui に保存してから Maya にロードし、以下の MEL コマンドを使用して表示するとします。

string $dialog = `loadUI -uiFile "/home/autodesk/createDialog.ui"`;
showWindow $dialog;

または Python の以下のコマンド

import maya.cmds as cmds
dialog = cmds.loadUI(uiFile='/home/autodesk/createDialog.ui')
cmds.showWindow(dialog)

コマンドは、該当する Maya コマンドを実行することで、ファイルに指定したウィジェットを作成します。たとえば、前述の例にある 2 つのラベルは Maya の コマンドを使用して作成します。comboBox コントロールは コマンド、入力フィールドは コマンドで作成します。これで、作成したコントロールは通常の手順で作成したかのように MEL と Python のスクリプトで操作できます。

Qt Designer のウィジェットにダイナミック プロパティを追加することによって、コントロールの作成に使用したコマンドにフラグを渡すことができます。このプロパティの名前は -width の冒頭のハイフンなどを含め、フラグの名前に一致している必要があります。MEL ではなく Python を使用してコントロールを作成する場合は、冒頭のハイフンを + に置き換えて +width のようにします。同一のウィジェットに MEL と Python 両方のフラグを指定すると、動作が定義されないため、エラーとなります。フラグが引数を取る場合は、引数をプロパティの値として指定します。

以下の図に、Qt Designer の comboBox に -changeCommand プロパティを追加したところを示します。

対応する optionMenu コントロールを作成すると、-changeCommand フラグが設定されてコマンド文字列「newObjectType()」が実行されます。

コマンドで同等の Maya コントロールのない Qt ウィジェットを検出した場合でも、Qt ウィジェットが作成されますが、MEL または Python のスクリプトからアクセスすることはできません。この例として、ダイアログの下部にあるボタン ボックスを挙げます。ここでは、Maya に該当するコントロールがない QDialogButtonBox ウィジェットを使用しています。このため、ボタン ボックス自体もその中にあるボタンにもアクセスできません。ボタン ボックスを使用せずにダイアログに個別にボタンを配置した場合、 コマンドは Maya の コマンドを使用してボタンを作成しており、スクリプトへのアクセスが可能になっています。

ファイルのあらゆるレイアウトは汎用レイアウトとして作成され、Maya には コマンドを使用しなければアクセスできません。、 といった固有のレイアウト タイプ用のコマンドは使用しません。

Maya でコントロールまたはレイアウトに指定された名前は、Qt Designer の objectName プロパティに指定した名前です。 最上層のウィンドウの名前は一意である必要がありますが、指定した名前がすでに使用されている場合、 コマンドで末尾に数字を追加して一意にします。