2016-07-26 9 views
0

私がしたいのは、ボタンの条件を追加してトグルします。条件が満たされない場合、ボタンは何もしません。最初に通常のwxwidgetsボタンでこの設定を作成しようとしましたが、条件が満たされた後にボタンのスタイルを変更する簡単な方法が見つかりませんでした。WxWidgets - conditonを持つToggleButton

+2

wxWindow :: Enable(bool enabled) –

+0

@JonTrauntveinドキュメントから、私がしたいことをしていないようです。現在、 "wxEVT_COMMAND_TOGGLEBUTTON_CLICKED"イベントハンドラのトグルの条件をチェックします。トグルボタンを無効にすると、それ以上条件をチェックできませんでした。 –

+0

継承を試して、イベントハンドラを上書きしましたか? –

答えて

0

きれいではありません私は、値の代入(ブール値)機能によってトグル値を設定することで、それを修正し、条件が失敗した場合は、ボタンを非切り替えるにはfalseに設定している間:

void MyButton::onPressed(wxCommandEvent& event) { 
    if (CONDITION) { 
     SetValue(false); 
    } 
} 
0

最も単純で最もエレガントこの種の問題の解決策は、ある条件が真であれば無効にするボタンのハンドラをwxEVT_UPDATE_UIと定義することです。例えば、あなたと仮定すると使用できるC++ 11:

myButton->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& event) { 
    event.Enable(some-condition-for-the-button-to-make-sense); 
}); 

wxWidgetsのは、UIの変更後に定義されたイベントハンドラを呼び出すと、自動的にボタンの状態を更新します。

特に、条件が複雑である場合や、他のいくつかのコントロールの値に依存する場合は、ボタンの状態を手動で管理する方が、更新を忘れるのは簡単です。