我正在编写一个QtConcurrent
用于启动线程的程序。就我而言,当我使用鼠标滚动时,我使用它来呈现 QGraphicsView。
我正在使用以下代码启动线程:
if (future.isRunning()) {
future.cancel();
}
future = QtConcurrent::run(this,&AeVectorLayer::render, renderparams, pos);
watcher.setFuture(future);
线程完成后,我finished
用QfutureWatcher
.
这是我的渲染功能:
QList<AeGraphicsItem*> AeVectorLayer::render(Ae::renderParams renderparams, int pos)
{
AeVectorHandler *coso = new AeVectorHandler();
coso->openDataset(AeLayer::absoluteFilePath);
coso->setTransformCoordinates(myEPSG);
QList<AeGraphicsItem*> bla = coso->getItems(renderparams.sceneRect.x(),
renderparams.sceneRect.y(), renderparams.sceneRect.width(),
renderparams.sceneRect.height(), renderparams.zoom, color, this);
for (int i = 0; i < bla.size(); i++)
bla.at(i)->setZValue((qreal)pos);
delete coso;
return bla;
}
如您所见,我的QList<QGraphicsItem*>
渲染函数中有一个。当未来被取消时,我怎样才能销毁这个列表?我不明白在我的代码中我正在重新定义future
变量,但我不知道如何避免它。