2012-09-28 4 views
2

Qt에서 : 위젯 -ui 클래스를 만들고 두 개의 별도 기본 위젯 (또는 창)에서 위젯을 두 개의 다른 레이아웃으로 표시하려고합니다. 그래서 내가 원하는 :QT : 두 개의 레이아웃이 동일한 위젯을 추가합니다.

widget_based_class* inside = new widget_based_class(base_widget1); 

QHBoxLayout *lay1=new QHBoxLayout(base_widget1); 
base_widget->setLayout(lay1); 
lay1->addWidget(inside); 
base_widget1.show(); 

------------------------------- 
base_widget1.hide(); 
QHBoxLayout *lay2=new QHBoxLayout(base_widget2); 
base_widget->setLayout(lay2); 
lay2->addWidget(inside); 
base_widget2.show(); 

나는 이것을 어떻게 달성 할까? (내 프로그램이 더 복잡해 코드 작업을 보지 못했다.) 탱크.

답변

4

QWidget에는 하나의 상위 위젯 만 있고 해당 상위에는 하나의 기하학 (위치 및 크기) 만 있습니다. QLayout :: addWidget()을 호출 할 때마다 해당 위젯이 위젯에 대한 부모가되고 레이아웃이 설치됩니다.

delete base_widget->layout(); 
base_widget->setLayout(lay2); 

을 base_widget 이미 레이아웃 매니저를 가지고 있지 않은 경우, 예상대로 새 하나를 설정하기 전에 기존의 레이아웃 매니저를 삭제해야하기 때문에

는 setLayout의의 두 번째 호출이 작동하지 않습니다 레이아웃 관리자 lay2는 단순히 부모가됩니다.

-2

각 위젯을 만들고 각 레이아웃에서 포인터를 사용합니까?

+0

재 양육의 효과가 이런 방식으로 발생해야한다고 생각합니다. – KcFnMi

관련 문제