WXWidgets에서 WXFrame 어린이를 열거 할 수 있습니까?
-
06-07-2019 - |
문제
WXGLADE 디자이너를 사용하여 작은 응용 프로그램을 위해 GUI를 생성합니다. 기본 응용 프로그램 창인 WXFrame에서 상속 된 클래스를 생성합니다. 유지 보수를 용이하게하기 위해이 생성 된 클래스에서 추가 코드를 작성하지 않으려 고합니다.
그러나 wxglade로 생성 된 모든 위젯은 실제로 자동 생성 된 메소드 Do_layout ()에서 생성되며 생성 된 클래스에서 생성 된 메소드의 범위를 벗어난 것 외부에 액세스 할 수 없습니다.
어린이 또는 그와 비슷한 것을 열거하여 이름별로 생성 된 클래스 외부의 특정 위젯의 포인터를 얻는 방법이 있습니까?
해결책
WXWindow (WXFrame 중 하나 인 WXFrame)에서 상속 된 모든 클래스는 기능이 있습니다. "자녀", 당신이 열거 할 수있는 자식 창 목록을 반환합니다. 이름으로 특정 필드를 찾고 있다면 사용하십시오."Findwindow" 기능.
다른 팁
사실 나는 대답을 직접 찾았습니다.
wxWindowList & children = myframe->GetChildren();
for ( wxWindowList::Node *node = children.GetFirst(); node; node = node->GetNext() )
{
wxWindow *current = (wxWindow *)node->GetData();
// .. do something with current
}
시도해보십시오 WXFormBuilder. 나는 또한 전에 wxglade를 사용했지만 사용 방법에 대한 제약이 너무 많습니다. 예를 들어, WXFormBuilder를 사용하면 양식의 각 컨트롤에 대해 '가시성'(공개, 보호, 개인)을 선택할 수 있습니다. 또한 이벤트 핸들러에 대한 가상 함수를 생성 할 수 있으므로 WXFormBuilder 생성 클래스에서 클래스를 도출하고 해당 기능을 구현합니다.
제휴하지 않습니다 StackOverflow