1

私のアプリケーションは の複数のインスタンスを起動できQMainWindowます。各インスタンスに同じメニューを持たせたいと考えています。インスタンスが初期化されていないが、アプリケーションがまだ実行されている場合 (Mac OS X で可能)、同じメニューを表示し、いくつかの項目を無効にしたいと考えています。

どうすればこれを行うことができますか?QMenuorをサブクラスQMenuBar化し、サブクラスをシングルトンに変えて、それを each に渡すことはできQMainWindowますか?

4

1 に答える 1

2

QMenuQt の所有権の概念に従い、各メニューまたはアクションは 1 つの親だけが所有できます。それを克服する方法はありますが、それは正しいことではありません。この場合、サブクラス化はあまり変更できません。特に所有モデルは変更できません。

ウィンドウごとに個別のメニューとアクションを作成し (ウィンドウがない場合は 1 つ)、各アクションを対応するスロット (ウィンドウ クラスまたはグローバル アクションのグローバル クラス) に接続するメニュー ファクトリを作成することをお勧めします。

于 2015-06-08T17:12:06.463 に答える