我正在用Qt做地图浏览器。当地图很大或者放大超过显示界面时,可以有像ScrollArea一样的移动条。还可以有测距功能,用鼠标可以在打开的图片上面画线。
我想问这个是要用分层实现呢,例如,打开的地图是一层,在地图上面画线是另一层?还是直接把地图画出来后,在用画图功能画线?后者每次画线后都要更新,这样效率不高。但是前者我不会,是不是还有其他方法?
谁来指导一下,谢谢了!
------解决方案--------------------
楼上说的应该可行,楼主可以试试
------解决方案--------------------
图层显示问题建议你使用视图场景模式,就是QGraphicsVIew QGraphicsScene QGraphicsItem
如果用到矢量图的话就用QGraphicsSvgItem
如果你的场景对象(QGraphicsScene)不设置边框,它会自动根据你的图片大小设置边框,这样你说的“当地图很大或者放大超过显示界面时,可以有像ScrollArea一样的移动条。”就可以实现了。
然后在写PaintEvent函数个MouseEvent函数实现画线,
这样你的图片数据保存在图元对象中(QGraphicsItem),而你的画线数据保存在窗口中,就实现了数据分层吧。要想保存画好的数据,可以通过窗口的函数得到画面,并保存。要想清空画线数据,直接把图元重新初始化就可以了