V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Mmmmc
V2EX  ›  问与答

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

  •  
  •   Mmmmc · 2018-05-09 10:05:27 +08:00 · 1393 次点击
    这是一个创建于 2393 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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);
    }
    3 条回复    2018-05-09 11:03:25 +08:00
    sbw
        1
    sbw  
       2018-05-09 10:13:17 +08:00
    这里一般不需要特殊处理,如果你的问题是一直没收到对应的 touch event 的话,检查一下 DrawWidget 是否设置了允许接受 touch 事件 setAttribute(Qt::WA_AcceptTouchEvents);
    Mmmmc
        2
    Mmmmc  
    OP
       2018-05-09 10:58:13 +08:00
    @sbw 前辈
    我不是很清楚,不做处理,那这里 e->accept();的意义何在?我看过 accept()接受和 ignore()忽略,还是不能理解。
    而且我的需求是在触摸事件下绘图,(就是白板的功能),那我只需要在相应事件下写代码就可以了?不知道我的理解对不对。
    sbw
        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   ·   实用小工具   ·   1063 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:01 · PVG 04:01 · LAX 12:01 · JFK 15:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.