我有一个Worker
类在另一个线程中做一些工作,它使用moveToThread()
. 在Worker::doWork()
方法内部,我还创建了一个QTimer
应该根据任务将花费的估计时间发出进度更新的方法。
这是一个例子:
ThreadController::ThreadController()
{
Worker* worker = new Worker;
worker->moveToThread(&m_workerThread);
// ...
m_workerThread.start();
emit startWorker(params); // connected to Worker::doWork()
}
class Worker : public QObject
{
Q_OBJECT
public slots:
Worker::doWork(const QString& params)
{
QTimer* timer = new QTimer(this);
connect( timer, SIGNAL(timeout)), this, SLOT(updateProgress()) );
timer->start(estimateTaskLength() / 100);
// perform work...
}
}
现在这不能按预期工作。插槽仅在updateProgress()
工作完成后才开始被调用。