关于 QTouchEvent,中的 accept()如何实现???

2018-05-09 10:05:27 +08:00
 Mmmmc
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);
}
1368 次点击
所在节点    问与答
3 条回复
sbw
2018-05-09 10:13:17 +08:00
这里一般不需要特殊处理,如果你的问题是一直没收到对应的 touch event 的话,检查一下 DrawWidget 是否设置了允许接受 touch 事件 setAttribute(Qt::WA_AcceptTouchEvents);
Mmmmc
2018-05-09 10:58:13 +08:00
@sbw 前辈
我不是很清楚,不做处理,那这里 e->accept();的意义何在?我看过 accept()接受和 ignore()忽略,还是不能理解。
而且我的需求是在触摸事件下绘图,(就是白板的功能),那我只需要在相应事件下写代码就可以了?不知道我的理解对不对。
sbw
2018-05-09 11:03:25 +08:00
@Mmmmc event 的 accept/ignore 是定义不同组件之前谁来处理这个事件的,如果你设置为 ignore,就会有下一个组件去处理,你如果已经处理过,这个事件就完成了,不会往下传递。设置 WA_AcceptTouchEvents 之后,这里的 event 应该已经是 accepted 的了,你需要的就是 handle 对应的 touch begin/update/end,当做 mouse 的 press/move/release 来实现绘图就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/453325

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX