2016-07-26 18 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任何更改后,并自动更新按钮的状态。

这比手动管理按钮状态更好,因为它很容易忘记更新它,特别是如果条件复杂和/或取决于其他几个控件的值。