Ну, в "Введение в шаблоны проектирования в C ++ с Qt4" говорится, что
"можно избежать использования
темы в пользу цикла событий Qt
в сочетании с QTimers "
но я никогда не пробовал:)
На самом деле, я только что попробовал -
добавить:
QTimer *Timer;
в заголовке класса MainWindow и в конструкторе MainWindow добавить:
Timer = new QTimer(this);
затем измените функцию calc () из функции в сигнал и измените:
void MainWindow::startCalculation()
{
qDebug() << "hello";
this->startButton->setDisabled(true);
this->stopButton->setEnabled(true);
this->calcStatus = true;
connect(Timer, SIGNAL(timeout()), this, SLOT(calculate()));
Timer->start(0);
}
void MainWindow::stopCalculation()
{
this->startButton->setEnabled(true);
this->stopButton->setDisabled(true);
this->calcStatus = false;
Timer->stop();
Timer->disconnect(this,SLOT(calculate()));
}
Это должно работать до тех пор, пока вы не передадите какие-либо аргументы в Calculate ().