2014-02-17 7 views
1

좌표를 설정하려면 setGeometry()을 사용하고 있습니다. 하지만 일부 widget을 삭제하고 기본 레이아웃에서 제거하면 기하학을 올바르게 설정할 수 없습니다. 나는 KeyReleaseEvent()을 사용하고 있습니다. 즉, Key D를 누르면 특정 위젯을 제거해야하며 기하학을 특정 위치로 설정해야합니다. 처음으로 그것을 누르면, 효과는 보이지 않지만 위젯은 제거되고 두 번째로 누르면 올바르게 설정됩니다.QT에서 지오메트리를 설정할 수 없습니다

void mywindow::popUpWindow() 
{ 
    if(stack1->currentIndex()==0){ 
     stack3->hide(); 
     mainLayout->addWidget(stack2); 
     stack2->show(); 
     stack2->setFixedSize(400,200); 
     this->setGeometry(100,400,900,200); 
    } 

    if(stack1->currentIndex()==1){ 
     stack2->hide(); 
     mainLayout->addWidget(stack3); 
     stack3->show(); 
     stack3->setFixedSize(400,200); 
     this->setGeometry(100,400,900,200); 
    } 
} 

void mywindow::deleteWindow() 
{ 
    mainLayout->removeWidget(stack2); 
    mainLayout->removeWidget(stack3); 
    stack2->hide(); 
    stack3->hide(); 
    this->setGeometry(100,400,500,200); 

} 

popUpWindow() 하나 KeyReleasedEvent()deleteWindow() 다른 키와 링크로 연결되어 있습니다. 당신이 모든 것을 잘 크기를 조정하려면 After pressing 2nd time D Key and calling deleteWindow for the 2nd time

Fig 1: Original WIndow 
Fig 2: After calling popUpWindow() by pressing key I 
Fig 3: After calling deleteWindow() by pressing key D for the first time 
Fug 4: After calling again deleteWindow() for 2nd time 

답변

1

After pressing D key and calling deleteWindow()

After pressing I Key and calling popWindow()

Original WIndow

위젯을 제거한 후, 당신은 adjustSize()를 호출해야합니다.

또한 스택 위젯의 위젯 크기가 끝나는 너비와 높이에 영향을 줄 수 있습니다.

희망이 있습니다.