关于Qt触摸事件的问题

shy_wing 2013-11-04 09:53:56

bool GraphicsScene::event(QEvent *event){
qDebug()<<event->type();
switch (event->type()) {
case QEvent::TouchBegin:
{
qDebug()<<"touch Begin";
return true;
}
case QEvent::TouchUpdate:
{
qDebug()<<"touch Update";
return true;
}
case QEvent::TouchEnd:
{
qDebug()<<"touch end";
return true;
}
default:
return QGraphicsScene::event(event);
}

这里,输出的事件代码只有197 , 没有QEvent的Touch事件(194,195,196)。求解,如何才能捕获到Touch事件
...全文
1760 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mytwpstar 2014-06-16
  • 打赏
  • 举报
回复
在GraphicsView中的viewportEvent函数中,监听。
rjsloth 2013-11-14
  • 打赏
  • 举报
回复
引用 9 楼 shy_wing 的回复:
[quote=引用 8 楼 rjsloth 的回复:] 是不是因为你没有对需要接受touch事件的GraphicsItem调用函数setAcceptTouchEvents(true)?因为GraphicsItem默认是不接受touch事件的。
在scene中,我还没有添加item到里面。我仅仅只是把touch设备连接上后,用手点击设备,然后在scene里面怎么都没有想要获取到的Touch信号[/quote] 好吧,我只能说,虽然QGraphicsView是QWidget,但是还是和QWidget有很大区别。你还是加上item之后再去点item看能不能获得touch事件吧,你view里什么都没有添加,估计Qt把这个touch事件忽略了。同时你也要注意item默认是不接受touch事件的。
shy_wing 2013-11-14
  • 打赏
  • 举报
回复
引用 8 楼 rjsloth 的回复:
是不是因为你没有对需要接受touch事件的GraphicsItem调用函数setAcceptTouchEvents(true)?因为GraphicsItem默认是不接受touch事件的。
在scene中,我还没有添加item到里面。我仅仅只是把touch设备连接上后,用手点击设备,然后在scene里面怎么都没有想要获取到的Touch信号
rjsloth 2013-11-14
  • 打赏
  • 举报
回复
是不是因为你没有对需要接受touch事件的GraphicsItem调用函数setAcceptTouchEvents(true)?因为GraphicsItem默认是不接受touch事件的。
shy_wing 2013-11-13
  • 打赏
  • 举报
回复
引用 5 楼 xiaoxiaokun888 的回复:
[quote=引用 2 楼 yanbin_1985525 的回复:] 确定两点: 1.设备支持touch事件(是触控设备); 2.需要设置窗口属性:setAttribute(Qt::WA_AcceptTouchEvents); //接收touch消息
+1 确定下你的设备是否是触控设备,别是鼠标在那点击。 我在开发板上可以捕获到触控事件,没有问题![/quote] 谢谢你的回答,我有尝试过,使用QWidget测试,QWidget的event函数中,可以获取到QEvent的Touch事件(194,195,196),当我使用VIEW与SCENE是,事件代码莫名的就变成了197了
shy_wing 2013-11-13
  • 打赏
  • 举报
回复
引用 4 楼 rjsloth 的回复:
根据我的经验,接受触碰事件的是QGraphicsView,然后如果有需要,view会把事件丢给scene处理。而view是widget,按你说的,QWidget可以捕获到touch事件,那么view一定能够捕获到touch事件,所以你去view的event函数中查一下它把touch事件怎么了吧。
谢谢你的回答,我也试过了。在view中,同样的得到的输出的事件代码只有197 , 没有QEvent的Touch事件(194,195,196)。
xiaoxiaokun888 2013-11-12
  • 打赏
  • 举报
回复
引用 2 楼 yanbin_1985525 的回复:
确定两点: 1.设备支持touch事件(是触控设备); 2.需要设置窗口属性:setAttribute(Qt::WA_AcceptTouchEvents); //接收touch消息
+1 确定下你的设备是否是触控设备,别是鼠标在那点击。 我在开发板上可以捕获到触控事件,没有问题!
rjsloth 2013-11-08
  • 打赏
  • 举报
回复
根据我的经验,接受触碰事件的是QGraphicsView,然后如果有需要,view会把事件丢给scene处理。而view是widget,按你说的,QWidget可以捕获到touch事件,那么view一定能够捕获到touch事件,所以你去view的event函数中查一下它把touch事件怎么了吧。
RabinSong 2013-11-04
  • 打赏
  • 举报
回复
分也太低了吧
shy_wing 2013-11-04
  • 打赏
  • 举报
回复
引用 2 楼 yanbin_1985525 的回复:
确定两点: 1.设备支持touch事件(是触控设备); 2.需要设置窗口属性:setAttribute(Qt::WA_AcceptTouchEvents); //接收touch消息
都有设置,我刚刚试过了,同样的代码,在QWidget中,可以捕获到Touch事件(194,195,196),而在QGraphicsScene中,只有197
醉过方知酒烈 2013-11-04
  • 打赏
  • 举报
回复
确定两点: 1.设备支持touch事件(是触控设备); 2.需要设置窗口属性:setAttribute(Qt::WA_AcceptTouchEvents); //接收touch消息

16,816

社区成员

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

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