문제

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 생성 클래스에서 클래스를 도출하고 해당 기능을 구현합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top