首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上使用QTouchEvent而不是QMouseEvent

在Linux上使用QTouchEvent而不是QMouseEvent
EN

Stack Overflow用户
提问于 2017-10-02 22:10:59
回答 1查看 637关注 0票数 21

我正在尝试在Qt5.9中处理来自M3触摸屏的QTouchEvent。我使用的是Qt Finger Print example,它在Windows7上运行良好,但在Ubuntu16.04上,我收到的是鼠标事件,而不是触摸事件。是Qt的问题还是操作系统配置错误?

更重要的是,QTouchDevice::devices().size()总是等于0。

EN

回答 1

Stack Overflow用户

发布于 2020-03-04 09:56:48

我建议你在多个平台上使用EventFilters来捕捉触摸和鼠标事件。为此,您必须在小部件的构造函数中调用installEventFilter,并实现eventFilter来过滤您要查找的QEvent。例如,使用下面这样的内容:

代码语言:javascript
复制
bool ECGPlot::eventFilter(QObject *o, QEvent *ev) {
    bool ret = false;

    switch (ev->type ()) {
        case QEvent::TouchBegin:
            ret = true;
            break;

        case QEvent::TouchUpdate:
            ret = true;
            break;

        case QEvent::TouchEnd:
            ret = true;
            break;

        case QEvent::Wheel:
            ret = true;
            break;

        case QEvent::MouseButtonPress:
            ret = true;
            break;

        case QEvent::MouseButtonRelease:
            ret = true;
            break;

        case QEvent::MouseMove:
            ret = true;
            break;

    }

    return ret;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46527220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档