Qt场景中拖动图元的位置发生了偏移?

现象:

如下图所示在场景中添加了一个矩形图元,第一次拖动该图元时,图元的位置显示正常。

之后再拖动图元时图元的位置会先偏离原来的位置一段距离。

offset.gif


原因:

例子中使用的场景类是从QGraphicsScene派生的,并重写了mouseReleaseEvent事件。在事件中做了一些处理,但是没有调用父类QGraphicsScene的mouseReleaseEvent函数,导致QGraphicsScene类中对鼠标释放事件的处理丢失了。

image.png


解决办法:
重写事件函数时,在添加了自己的操作后记得调用基类的该函数,除非确实不需要父类中实现的功能。

image.png



测试环境Qt5.9

演示站
上一篇:Qt如何实现应用程序任务栏图标闪烁?
下一篇:Qt QGraphicsScene接收不到drop事件?

发表评论