我正在使用QGraphicsScene来显示非常多的项目,通常超过100,000。当我打电话删除场景时,需要很长时间才能完成,10秒或更长时间。
一些实验表明,QGraphicsScene :: clear函数是缓慢的部分。如果我先清除然后删除,则清除速度很慢但删除速度很快。
为什么QGraphicsScene析构函数/清除函数如此慢,有什么方法可以加快它的速度?
答案 0 :(得分:5)
我发现问题与我的QGraphicsScene在QGraphicsView中显示的事实有关。如果我第一次调用view->setScene(0)
从视图中删除我的场景,那么场景将会更快地删除。
我通过使用callgrind来查明在QGraphicsScene :: clear期间调用了哪些函数,并且我看到QGraphicsView函数占用了时间。我不确定,但我怀疑QGraphicsView正在为每个删除的对象更新自己的内容。