я использую setGeometry()
установить координату widget
, Но когда я удаляю некоторые widget
и удалите его из основного макета, тогда он не сможет правильно настроить геометрию. я использую KeyReleaseEvent()
то есть, когда я нажимаю клавишу D, определенный виджет должен быть удален, и он должен установить геометрию в определенное положение. Когда я нажимаю на него в первый раз, эффект не виден, но виджеты удаляются, а когда я нажимаю на него во второй раз, он настроен правильно.
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()
связан с другим ключом.
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
После удаления виджетов, если вы хотите, чтобы все хорошо изменилось, вы должны позвонить adjustSize()
,
Также размеры виджета в сложенном виджете могут влиять на конечную ширину и высоту, которыми в конечном итоге будет ваше окно.
Надеюсь, это поможет.
Других решений пока нет …