2016-07-26 3 views
0

내가하고 싶은 것은 토글 버튼의 ​​조건을 추가하는 것입니다. 조건이 충족되지 않으면 버튼이 아무 것도하지 않습니다. 먼저 정상적인 wxwidgets 버튼을 사용하여이 설정을 만들려고했으나 조건이 충족 된 후에 버튼의 스타일을 쉽게 변경할 수있는 방법을 찾지 못했습니다. 조건이 실패 할 경우조건이있는 WxWidgets - ToggleButton

+2

wxWindow :: Enable (bool enabled) –

+0

@JonTrauntvein 문서에서 내가 원하는 것을 수행하지 않는 것 같습니다. 현재 "wxEVT_COMMAND_TOGGLEBUTTON_CLICKED"이벤트 핸들러에서 토글 조건을 확인합니다. 토글 버튼을 비활성화하면 더 이상 조건을 확인할 수 없습니다. –

+0

상속을 시도하고 이벤트 처리기를 덮어 썼습니까? –

답변

0

것은 내가 SetValue는 (BOOL) 기능을 통해 토글 버튼 값을 설정하고 거짓으로 설정하여 고정하지 꽤 버튼을 유엔-전환하는 동안 :

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의 변화 이후에 정의 된 이벤트 핸들러를 호출하고 자동으로 버튼의 상태를 업데이트합니다.

버튼 상태를 수동으로 관리하는 것이 바람직합니다. 특히 상태가 복잡하거나 다른 여러 컨트롤의 값에 따라 변경되는 경우를 잊어 버리는 것은 매우 쉽습니다.