Не работает метод .show() в Qt C++

Заметил что у меня не работает метод show(), работает только exec(), но он блокирует дальнейшее выполнение программы до закрытия окна.

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "progress.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::encode_file() 
{
    Progress progress;
    progress.setModal(true);
    progress.show(); //Окно progress по непонятной причине не отображается. Если же меняю на exec(), то всё работает.

}

Ответы (1 шт):

Автор решения: gbg

У вас окно Progress существует только внутри метода MainWindow::encode_file()

Вам надо создавать прогресс на динамике, например так

В классе объявить Progress* prg;

В конструкторе класса prg=new Progress(this);

В теле метода - prg->show();

→ Ссылка