2014-01-13 1 views
0

작동하지 않습니다.removeWidget() 나는 위젯을 추가하고 유사하게 그 위젯을 제거하고 싶지만 레이아웃에서 제거에 위젯이 수 없습니다입니다

void mywindow::popUpWindow() 
{ 

    if(stack1->currentIndex()==0){ 
     mainLayout->removeWidget(stack3); 
     mainLayout->addWidget(stack2); 
     this->setGeometry(80,50,250,200); 

    } 

    if(stack1->currentIndex()==1){ 
     mainLayout->removeWidget(stack2); 
     mainLayout->addWidget(stack3); 
     this->setGeometry(80,50,250,200); 

    } 
} 

나는 QStackedWidgetcurrentIndex을 확인하고 추가하고 위젯을 제거하고 있습니다.

답변

1

당신은 그 안에 모든 페이지를 넣어 대신 많은 QStackedWidgets을 갖는 수동으로 전환 할의 페이지 사이를 전환 기능을 사용할 한 QStackedWidget이 있어야합니다. 두 개의 QStackedWidget을 갖고 싶다면 세 번째 QStackedWidget을 만들고 두 QStackedWidgets를 넣은 다음 두 번에 쉽게 전환하십시오. 레이아웃을 수동으로 조작 할 필요가 없습니다.

어쨌든, removeWidget 메소드는 위젯의 형상 관리를 비활성화합니다. 이전과 같은 부모와 위치를 유지합니다. 원할 경우 수동으로 숨길 수 있습니다.

사실, 당신은 단지 stack2->hide(); stack3->show(); 전화 및 레이아웃 방법의 사용을 제거 할 수 있습니다. 레이아웃에서 위젯을 제거 할 필요는 없으며 그냥 숨길 수 있습니다.

관련 문제