Qt を使用して直接作成したコントロールは、通常、Maya の UI コマンドで認識されません。
これらのコントロールは isUI コマンドでリストされないため、button などの特定タイプのコントロールのコマンドでは認識されません。作成されたコントロールを認識するのは、button などのコマンドのみです。
ただし、Qt コントロールに一意の名前を付けるために setObjectName() を使用した場合は、control コマンドを使用してコントロールの有無をテストし、コントロールに基本的な操作を実行できます。
たとえば、ボタンに一意の名前を割り当てる場合は、次のようにします。
button = new MyAction("Perform Action"); button->setObjectName("myActionButton");
次に、control コマンドを使用してボタンを非表示にします。
if (`control -q -exists myActionButton`) { control -e -visible false myActionButton; }
Qt を使用すると、Maya コマンドによって作成された UI 要素にアクセスできます。
MQtUtil C++ クラスには、Maya のコントロール、レイアウト、ウィンドウ、メニュー項目の基本となる Qt オブジェクトを取得するメソッドが用意されています。
たとえば、checkBox コマンドを使用して myCheckBox という名前の Maya checkBox コントロールを作成した場合、MQtUtil::findControl() クラスを使用して checkBox の QWidget ポインタを取得し、適切にキャストすることができます。
QWidget* control = MQtUtil::findControl("myCheckBox"); if (control) { QCheckBox* cb = qobject_cast<QCheckBox*>(control); }
重要: コントロールのタイプがキャスト先のタイプと一致しない場合、キャスト操作を行うと nullptr が返されます。
QWidget ポインタを使用して QCheckBox のいずれかのプロパティにアクセスするか、QCheckBox で任意のメソッドを呼び出すことができます。
if (cb) { if (cb->isChecked()) { MGlobal::displayInfo("myCheckBox is checked"); } else { MGlobal::displayInfo("myCheckBox is not checked"); } }