首页| 论坛| 消息

标题:qt屏保 如何捕获全屏的鼠标事件[已经解决]
作者:gjf123
日期:2011-05-06 17:04
内容:

目的,捕获在触摸屏任意位置被按下的鼠标事件,不要告诉我重载mousePressEvent,因为当界面上有控件(如按钮)时,触摸到此控件是不会产生mousePressEvent事件的,也不要告诉我把这个控件安装个事件过滤器,因为,当我有很多个控件时,我一个个安装是比较吃力的。
问题,如何得到在触摸屏任意位置被按下的鼠标事件?(即捕获全局的鼠标事件),因为得到这个事件,我就可以在这个事件里,将定时器启动或清零或退出屏保返回主界面等操作了。
多谢各位大侠相助,小弟感激不尽


#1 [dbzhang800 05-06 17:15]
可以覆盖 QApplication:notify()
可以给 QApplication 安装事件过滤器
....
#2 [duduqq 05-06 17:26]
估计和系统的API有关吧,
或者你在鼠标的驱动里试试能不能获得这个事件了
#3 [gjf123 05-06 18:12]
dbzhang800提供QApplication:notify()这个思路,觉得肯定可行,但对我这个初学者,较难,渴望dbzhang800写点代码出来,非常感激。duduqq 大侠的指点,我明白,驱动里肯定能捕获的,感激,不过应用层能做的,就不要麻烦驱动了。
继续请求高手详细指点!小弟感激中
#4 [sbtree 05-07 00:06]
引用第1楼dbzhang800于2011-05-06 17:15发表的:
可以覆盖 QApplication:notify()
可以给 QApplication 安装事件过滤器
....
这里我有个疑问,当屏幕保护在运行的时候,屏幕保护程序应该应该处在窗口系统的最顶层,通过notify函数触屏消息能被QApplication截获吗?
我在看QCoreApplication::winEventFilter函数的时候,留意到event dispatcher,通过QAbstractEventDispatcher::instance()可以返回一个指针,这个看上去能处理系统级别的消息,而不是应用程序级别的消息。自己没尝试过,又尝试过的不妨介绍点经验
#5 [roywillow 05-07 07:19]
我的做法是,用QTimer定时取得鼠标的位置,然后判断是否移动

<< 1 2 3 >> (1/5)

回复 发表
主题 版块