1

カスタム Qt ウィジェットのコードで、それが現在 Qt デザイナーでインスタンス化されていることを知るにはどうすればよいですか?

使用事例:

QPushButton、QLabel などのいくつかの子ウィジェットを持つ複雑なカスタム ウィジェットを作成します。

アプリケーションロジックが必要とするため、ウィジェットが作成されると、これらのサブコンポーネントのほとんどは表示されませんが、デザイン時にフォームに配置すると表示されます。

設計時にスタイル シートを操作できるようにするため。現在、私が得るのは空であり、コンストラクターの結果にすぎません-最小ビュー(私の場合は実際には空です)。

私が探しているのは、次のようなことができることです

MyQWidget::(QWidget *parent)
{
 ....
   if(isRunningInDesigner())
   {
      myChildWidget1->setVisible(true);
      myChildWidget2->setVisible(true);
      myChildWidget3->setVisible(true);
   }
   else
   {
      myChildWidget1->setVisible(false);
      myChildWidget2->setVisible(false);
      myChildWidget3->setVisible(false);
   }
....
}

では、このbool isRunningInDesigner()には何を入れればよいでしょうか?

4

1 に答える 1

2

Qt Designerのマニュアルから:

Qt Designer でカスタム ウィジェットに特別な動作を与えるには、initialize()関数の実装を提供して、Qt Designer 固有の動作のウィジェット構築プロセスを構成します。この関数は、 createWidget()を呼び出す前に初めて呼び出され、後で Qt Designer がプラグインのcreateWidget()関数を呼び出すときにテストできる内部フラグを設定できます。

これらはQDesignerCustomWidgetInterfaceプラグイン インターフェイスのメソッドです。つまり、Qt Designer がプラグインにカスタム ウィジェットのインスタンスを作成するように要求したときに、ウィジェットの動作が異なるように指示します。

于 2010-07-28T02:07:59.730 に答える