WxWidgets — ToggleButton с условием

Я хотел бы добавить условие для переключения кнопки, если условие не выполняется, кнопка ничего не делает. Сначала я попытался создать эту настройку с помощью обычной кнопки wxwidgets, но не смог найти простой способ изменить стиль кнопки после выполнения моего условия.

0

Решение

Хотя это и не очень красиво, я исправил это, установив значение переключателя с помощью функции SetValue (bool) и установив в значение 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 вызовет определенный обработчик событий после любого изменения в пользовательском интерфейсе и автоматически обновит состояние кнопки.

Это предпочтительнее, чем управление состоянием кнопки вручную, так как ее очень легко забыть обновить, особенно если условие сложное и / или зависит от значений нескольких других элементов управления.

0

По вопросам рекламы [email protected]