QTouchEvent而不是Linux上的QMouseEvent

jas*_*mar 14 c++ linux qt touchscreen multiplatform

我试图在Qt 5.9中从M3触摸屏处理QTouchEvent.我使用Qt Finger Print示例,它在Windows 7上工作正常但在Ubuntu 16.04上我收到鼠标事件而不是触摸事件.是Qt的错误或错误的操作系统配置?

什么更QTouchDevice::devices().size()总是等于0.

小智 1

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

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;
}
Run Code Online (Sandbox Code Playgroud)