首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX 提问指南
广告
V2EX
›
问与答
关于 QTouchEvent,中的 accept()如何实现???
Mmmmc
·
2018-05-09 10:05:27 +08:00
· 1392 次点击
这是一个创建于 2391 天前的主题,其中的信息可能已经有所发展或是发生改变。
bool DrawWidget::touchEvent(QEvent *e)
{
QEvent::Type type=e->type();
switch (type) {
case QEvent::TouchBegin:
e->accept();
break;
case QEvent::TouchUpdate:
e->accept();
break;
case QEvent::TouchEnd:
e->accept();
break;
default:
break;
}
return QWidget::event(e);
}
qevent
Accept
type
break
3 条回复
•
2018-05-09 11:03:25 +08:00
1
sbw
2018-05-09 10:13:17 +08:00
这里一般不需要特殊处理,如果你的问题是一直没收到对应的 touch event 的话,检查一下 DrawWidget 是否设置了允许接受 touch 事件 setAttribute(Qt::WA_AcceptTouchEvents);
2
Mmmmc
OP
2018-05-09 10:58:13 +08:00
@
sbw
前辈
我不是很清楚,不做处理,那这里 e->accept();的意义何在?我看过 accept()接受和 ignore()忽略,还是不能理解。
而且我的需求是在触摸事件下绘图,(就是白板的功能),那我只需要在相应事件下写代码就可以了?不知道我的理解对不对。
3
sbw
2018-05-09 11:03:25 +08:00
1
@
Mmmmc
event 的 accept/ignore 是定义不同组件之前谁来处理这个事件的,如果你设置为 ignore,就会有下一个组件去处理,你如果已经处理过,这个事件就完成了,不会往下传递。设置 WA_AcceptTouchEvents 之后,这里的 event 应该已经是 accepted 的了,你需要的就是 handle 对应的 touch begin/update/end,当做 mouse 的 press/move/release 来实现绘图就行了
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
2666 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms ·
UTC 05:04
·
PVG 13:04
·
LAX 21:04
·
JFK 00:04
Developed with
CodeLauncher
♥ Do have faith in what you're doing.