Qt下绘制橡皮筋线

最近在绘制Qt下的橡皮筋线,但是大多搜到的都是利用Qt的QRubberBand类。QRubberBand可以实现橡皮筋框选取,即便是QRubberBand::Line,也只是绘制水平或垂直的线,并不能满足自己需要,也就是绘制360度任意角度的线。对于这个情况,就只能靠自己动手,丰衣足食了。实现起来主要有一下几点,同时也算是一点小总结:

1:感觉最好使用QGraphicsLineItem类。继承QGraphicsItem自定义一个item的话感觉意义不大,QGraphicsLineItem完全可以满足要求。

2:利用QGraphicsLineItem绘制出来的线,当在QGraphicsView中的mousePressEvent、mouseMoveEvent、mouseReleaseEvent中进行绘制的时候,会发现event->pos()得到的点并不是屏幕中所点击的位置,会有一定偏差,原因很简单,场景坐标和图形项坐标不一致,需要将图形项坐标映射到场景中去,所以对于event所获得的点,需要做个转换,即利用view的mapToScene,来得到真正所要使用的点。

3:绘制好后还有个问题,当按下鼠标并进行拖动的时候,会发现地图会有白色斑块,而大小恰好是所绘制的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值