2016-07-26 56 views
0

我想要做的是爲按鈕添加條件切換,如果條件不滿足,按鈕什麼也不做。我試着用普通的wxwidgets按鈕創建這個設置,但是找不到一個簡單的方法來改變我的條件滿足後的按鈕樣式。WxWidgets - 具有條件的ToggleButton

+2

wxWindow :: Enable(bool enabled) –

+0

@JonTrauntvein從文檔看,它似乎沒有做我想做的事情。目前,我在「wxEVT_COMMAND_TOGGLEBUTTON_CLICKED」事件處理程序中檢查切換條件,如果我要禁用togglebutton,我無法再檢查它的條件。 –

+0

您是否嘗試過繼承並覆蓋事件處理程序? –

回答

0

雖然如果條件失敗不漂亮我通過了的SetValue(布爾)功能設置的切換按鈕值並將其設置爲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任何更改後,並自動更新按鈕的狀態。

這比手動管理按鈕狀態更好,因爲它很容易忘記更新它,特別是如果條件複雜和/或取決於其他幾個控件的值。