Не удается установить геометрию в QT

я использую 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() связан с другим ключом.

Оригинальное окно

После нажатия клавиши I и вызова popWindow ()

После нажатия клавиши D и вызова deleteWindow ()После второго нажатия клавиши D и вызова 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

1

Решение

После удаления виджетов, если вы хотите, чтобы все хорошо изменилось, вы должны позвонить adjustSize(),

Также размеры виджета в сложенном виджете могут влиять на конечную ширину и высоту, которыми в конечном итоге будет ваше окно.

Надеюсь, это поможет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]