Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我如何在Qt中实现像平铺滚动这样的谷歌地图?_C++_Qt_Qgraphicsview - Fatal编程技术网

C++ 我如何在Qt中实现像平铺滚动这样的谷歌地图?

C++ 我如何在Qt中实现像平铺滚动这样的谷歌地图?,c++,qt,qgraphicsview,C++,Qt,Qgraphicsview,我正在使用Qt/C++并试图绘制一个大型而复杂的qgraphicscene。一旦我添加了很多对象,平移和缩放就会变得慢得令人不快。(当然,这并不奇怪)。我曾经玩过设备坐标缓存(帮助平移到某个点)和最小化视口更新等等,但最终会有太多的对象。我想做的是以某种方式从控制UI异步绘制项目。换句话说,就像谷歌地图一样,我想平移和缩放,让绘图尽可能快地跟上进度,但在项目完成绘图之前,我可以再次平移 我尝试的一种方法是创建两个QGraphicsCenes。其中一个具有实际对象,但未附加到QGraphicsVi

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

我尝试的一种方法是创建两个QGraphicsCenes。其中一个具有实际对象,但未附加到QGraphicsView。另一个QGraphicscene连接到QGraphicsView,但它只有一些大小可覆盖屏幕的平铺Qpixmap。计划是使用空闲的CPU周期来更新任何需要它的tile pixmap。这似乎可以让我对渲染进行必要的控制(因此我不必在重新渲染整个可见场景时进行阻止)。思想?有人实现了吗?

看看这里:

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

还展示了一些有关管理大量数据的内容。

我看过“40000个芯片”-我对该示例的理解是,它采用了一种很好的“详细级别”实现技术,其中每个芯片的QGraphicscene中只有一个项,但paint()如果变焦超过各种阈值,则芯片的边缘会绘制更多细节。你提供的链接似乎非常相关。我一有机会就会详细尝试一下。。。谢谢