QGraphicsScene :: clear()和析构函数性能

时间:2015-05-13 14:20:02

标签: qt qgraphicsview qgraphicsscene

我正在使用QGraphicsScene来显示非常多的项目,通常超过100,000。当我打电话删除场景时,需要很长时间才能完成,10秒或更长时间。

一些实验表明,QGraphicsScene :: clear函数是缓慢的部分。如果我先清除然后删除,则清除速度很慢但删除速度很快。

为什么QGraphicsScene析构函数/清除函数如此慢,有什么方法可以加快它的速度?

1 个答案:

答案 0 :(得分:5)

我发现问题与我的QGraphicsScene在QGraphicsView中显示的事实有关。如果我第一次调用view->setScene(0)从视图中删除我的场景,那么场景将会更快地删除。

我通过使用callgrind来查明在QGraphicsScene :: clear期间调用了哪些函数,并且我看到QGraphicsView函数占用了时间。我不确定,但我怀疑QGraphicsView正在为每个删除的对象更新自己的内容。