2012-02-29 13 views

答えて

14

あなたは、対応するQActionのインデックスを知っている場合:

QMenu::actions.at(i).setEnabled(false); 

P.S.を下記のように、setEnabled(bool)setDisabled(bool)はスロットです(したがって、toggle())ので、アクションの可用性を変更する必要があることを示す信号に接続できます。

+2

あなたはあなたの答えに追加することができて、メニュー項目を消すことができます 'それは、setEnabled(ブール値) 'と' setDisabled(bool) 'はスロットです(' toggle() ')ので、アクションの可用性を変更する必要があることを示すシグナルに接続できます。 –

+0

Thanx @ LucTouraille! –

+2

変数が頻繁に変更される場合(メニューよりも頻繁に表示される)、 'signal:QMenu :: aboutToShow()'に応答してのみ変数を切り替えることをお勧めします。とにかく目に見えないものを変えても意味がありません。 – MSalters

5

アクションのインデックスを探すことは必ずしも便利ではありません。 QtCreatorのフォームエディタを使用してインターフェイスを構築した場合は、各メニュー項目に対してアクションが発生します。それらの名前は、最初にアクションに与えたテキストに基づいています。たとえば、タイトルFoo Barのメニュー項目を対話的に入力すると、actionFoo_Barという名前のアクションが作成されます。コードエディタでui-> actionと入力して、QtCreatorが提案する "名前補完"を見てみましょう。私はこのような呼び出しを検討するような場合には

ui->actionFoo_Bar.setEnabled(false); 

あなたも

ui->actionFoo_Bar.setVisible(false); 
関連する問題