原始问题在此处描述。我理解所提供的解决方案,我认为它应该可以工作。但并非一切都进展顺利。我遇到的问题QThread::finished
并不总是发出或QWidget::close()
由于某些原因并不总是被调用。即有时我需要按两次关闭按钮。它在第二次印刷机上工作,因为工作线程在第一次印刷机上完成,并且closeEvent
不再被忽略。
仅当我尝试在主窗口可见后立即关闭应用程序时才会出现此问题。如果我等待几秒钟,应用程序会在第一次单击时关闭。
PS 工作线程是无限的。
更新
工人的运行方法
virtual void
run() {
PRINT("Simulation Started at Thread %d", QThread::currentThread());
_isFinished = false;
double position = 0.0;
// Some calculations
emit updated();
while (!_isFinished) {
_mutex.lock();
if (_isPaused)
_waitCondition.wait(&_mutex);
_mutex.unlock();
if (_isFinished)
break;
QThread::msleep(_delay);
// some calculations;
emit updated();
}
PRINT("Simulation Finished");
}