QGraphicsItem 的碰撞 问题

luhaoting110 2013-05-21 03:13:44
我想在QGraphicsItem::SelectionArea();的区域上画一个 选择框,本来是用在场景中加入item的方法。
但是发现 选择的时候 图形会发生碰撞然后改变位置,我就在QGraphicsItem::drawForeground里面画这个选择框发现还是 会发生碰撞。

不画这个选框的时候 一点没有问题 ,画了之后 ,先抓住一个图形移动鼠标 ,绘制选框的同时图形也在移动,选框和另一个图形的Rect重合 ,重合的这个图形就弹开了。(是抓住一个图形 同时 绘制选框的时候出现的问题)
单纯绘制选框没有任何问题。

怎么让item除了选中移动其他操作不会发生任何位置变化啊?
下面是 发生碰撞的图片
这是碰撞后的
...全文
563 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luhaoting110 2013-05-22
  • 打赏
  • 举报
回复
引用 6 楼 Inhibitory 的回复:
你得看看你实现哪里修改了其他图元的数据。
没有做图元数据修改 用的是Qt里面自己的移动 setFlag(QGraphicsItem::ItemIsMovable,true);
Inhibitory 2013-05-22
  • 打赏
  • 举报
回复
你得看看你实现哪里修改了其他图元的数据。
luhaoting110 2013-05-21
  • 打赏
  • 举报
回复
引用 3 楼 Inhibitory 的回复:
这个区域和其他图形的形状发生“碰撞”的时候 其他图形就会改变位置。
这个是错觉,开始的时候我也有和你同样的疑问,实际上这个是View中Scene的位置在变化。
你在Scene中画一些参照点或者图形,如原点,然后再观察,会发现他们的相对位置没变。

发错了!

luhaoting110 2013-05-21
  • 打赏
  • 举报
回复
引用 2 楼 luhaoting110 的回复:
[quote=引用 1 楼 Inhibitory 的回复:]
没有明白碰撞与图形发生变化的关系。
碰撞检测不会改变图形的形状与位置。


对哦 ,这个蓝色的框子 是QGraphicsItem::SelectionArea()的区域,这个区域的做法是鼠标按下记录一个点,移动记录另一个点,然后做矩形。
我发现拖着一个图形的时候 建立这个SelectionArea,这个区域和其他图形的形状发生“碰撞”的时候 其他图形就会改变位置。这个 怎么解决呢?[/quote]
看看这个!

下面这个椭圆没有改变位置
Inhibitory 2013-05-21
  • 打赏
  • 举报
回复
这个区域和其他图形的形状发生“碰撞”的时候 其他图形就会改变位置。 这个是错觉,开始的时候我也有和你同样的疑问,实际上这个是View中Scene的位置在变化。 你在Scene中画一些参照点或者图形,如原点,然后再观察,会发现他们的相对位置没变。
luhaoting110 2013-05-21
  • 打赏
  • 举报
回复
引用 1 楼 Inhibitory 的回复:
没有明白碰撞与图形发生变化的关系。 碰撞检测不会改变图形的形状与位置。
对哦 ,这个蓝色的框子 是QGraphicsItem::SelectionArea()的区域,这个区域的做法是鼠标按下记录一个点,移动记录另一个点,然后做矩形。 我发现拖着一个图形的时候 建立这个SelectionArea,这个区域和其他图形的形状发生“碰撞”的时候 其他图形就会改变位置。这个 怎么解决呢?
Inhibitory 2013-05-21
  • 打赏
  • 举报
回复
没有明白碰撞与图形发生变化的关系。 碰撞检测不会改变图形的形状与位置。

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧