查看: 1543|回复: 5

修改地标的问题

[复制链接]

该用户从未签到

发表于 2013-9-23 10:44:16 | 显示全部楼层 |阅读模式
     我需要在单击一个地标时,弹出一个对话框,用于编辑修改地标上的文本信息。我思路是这样的:重写AnnotationEventHandler的OnClick()函数,在里面弹出对话框(我用Qt做的模式对话框),编辑写后修改地标上的信息,功能实现了。但问题是我处理完对话框时,鼠标一直处于按下的状态,如何解决?
  个人感觉应该是在模式对话框那里出的问题,但不用模式对话框好像也起不到修改的效果,求帮助
  

该用户从未签到

发表于 2013-9-23 12:30:02 | 显示全部楼层
在release消息中 弹出对话框, 不要在 push中处理

该用户从未签到

 楼主| 发表于 2013-9-23 14:10:28 | 显示全部楼层
我还想着偷点懒,用osgEarth封装好的类呢,我看了它就是在push中处理的,看来要自己写呀。
感觉Qt的对话框在处理完时,发个消息什么的应该也能处理,但搞了一晚上也没弄明白

该用户从未签到

发表于 2013-9-23 17:08:39 | 显示全部楼层
push 也会,release也好,都可以实现,只是调用的次数只能是一次,估计你是在PUSH中,不短的调用你的对话框,那怎么能结束呢?
设置断点,看他什么时候执行调用和退出!不退出,就是没有执行退出语句!或是多次调用,一次退出!

该用户从未签到

 楼主| 发表于 2013-9-23 21:47:50 | 显示全部楼层
VR_user_happy 发表于 2013-9-23 17:08
push 也会,release也好,都可以实现,只是调用的次数只能是一次,估计你是在PUSH中,不短的调用你的对话框 ...

对话框肯定只是调用了一次,只不过用了模式对话框,PUSH时对话框就出来了,然后这个QT的模式对话框是不会把鼠标的 relase 事件给传出去的,所以对话框处理完了之后,虽然鼠标早就弹起了,操作器中的鼠标状态还是按下的状态,只要在空白处单击一下之后就正常了。我就是在考虑怎么处理对话框结束时鼠标的状态

该用户从未签到

发表于 2013-9-23 22:23:09 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-9-23 22:44 编辑

这就是说明你混用了2个线程!
在OSG里面的鼠标事件:不需要处理事件,只需要你能发送一个和传递一个信息(或是一个变量状态)让QT线程里面(没用过QT)接收到这个信息,让QT的接受事件如MFC中的ONTIMER一样知道信息发生变化,在QT里面去处理事件,处理完成在传递一个信息给OSG,复原原来传递的信息状态!
而不是想你处理鼠标点击Push在OSG里面,RELEASE 却在QT里面!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表