如何在Qt中实现类似谷歌地图的平铺滚动?

时间:2010-02-10 18:36:54

标签: c++ qt qgraphicsview

我正在使用Qt / C ++并试图绘制一个庞大而复杂的QGraphicsScene。一旦我添加了很多对象,平移和缩放变得令人不快。 (当然,这并不奇怪)。我玩过设备坐标缓存(帮助平移到一个点)和最小的视口更新等等,但最终只有太多的对象。我想做的是以某种方式控制UI异步绘制项目。换句话说,就像谷歌地图一样,我想平移和缩放,让绘图尽可能快地赶上,但是在项目完成绘图之前能够再次平移。

我正在尝试的一种方法是创建两个QGraphicsScenes。一个有实际的对象,但没有附加到QGraphicsView。另一个QGraphicsScene连接到QGraphicsView,但它只有一些平铺的QPixmaps,其大小可以覆盖屏幕。计划是使用备用CPU周期来更新任何需要它的tile pixmap。这似乎会给我对渲染的必要控制(所以我不必在重新渲染整个可见场景时阻塞)。思考?有没有人实现过这个?

1 个答案:

答案 0 :(得分:3)

看看这里:Generating content in threads

听起来这与你想要做的类似。平铺机制是加载大量数据的常用方法。除了发布的链接,我还没有看到使用QGraphicsView的简单示例。

40000 Chips还展示了有关管理大量数据的一些事项。