Не удается установить геометрию в 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(),

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

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

Другие вопросы по тегам