Здравствуйте!
Прочитал статью, как правильно использовать QThread, но, видимо, что-то упустил.
У меня существует класс MainWidget, который отвечает за прорисовку интерфейса и класс Solver, отвечающий за функционал программы.
В конструкторе первого пишу:
thread = new QThread(this);
connect(thread, SIGNAL(started()), solver, SLOT(run()));
connect(solver, SIGNAL(finished()), thread, SLOT(terminate()));
solver->moveToThread(thread);
При нажатии на кнопку вызывается слот:
void MainWidget::convert()
{
saveSettings();
thread->start();
// QtConcurrent::run(solver, &Solver::run);
}
При такой реализации интерфейс застывает и ждёт, когда solver закончит свою работу.
При реализации QtConcurrent::run(solver, &Solver::run); всё работает прекрасно.
Что я не так делаю? Прошу помощи.