我正在使用 Qt(Mac,4.7 版)通过 QGraphicsView 和 QGraphicsScene 渲染一个相当大的场景(来自 Open Street Maps 的地图数据)。在我尝试为场景中的项目设置 Z 值之前,一切都很好。我尝试了两种不同的方法来做到这一点。一方面,我只是这样做:
QGraphicsPathItem *item = scene->addPath(path, pen);
item->setZValue(z);
另一个我创建了自己的 QGraphicsItem 子类,但遇到了完全相同的问题。
速度变慢的原因似乎是在 Qt 方面。设置 z 值后,场景生成需要很长时间(需要几分钟才能显示任何内容,并且我得到旋转的死亡沙滩球),但是一旦生成,速度就会恢复正常. 此外,当我尝试关闭应用程序时,它会在关闭前挂起几分钟。如果我不考虑 z 值,我看不到任何这些问题,并且我添加了调试代码以验证它没有出现在我自己的代码中。
不幸的是,我需要设置 z 值才能正确渲染街道(例如道路周围的轮廓,使高速公路的顺序高于街道等)。
任何帮助是极大的赞赏!