我试图在Qt 5.9中从M3触摸屏处理QTouchEvent。我使用Qt Finger Print example并且它在Windows 7上工作正常但在Ubuntu 16.04上我收到鼠标事件而不是触摸事件。这是Qt的错误或错误的操作系统配置吗?
更多QTouchDevice::devices().size()
总是等于0。
答案 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;
}