C++ Qt 5.5-触摸/多点触摸不适用于Ubuntu 14.04

C++ Qt 5.5-触摸/多点触摸不适用于Ubuntu 14.04,c++,linux,qt,ubuntu,touch,C++,Linux,Qt,Ubuntu,Touch,我正在尝试创建一个支持多点触摸的QtWidgets应用程序。我使用的平板电脑安装了Ubuntu 14.04、QtCreator 3.5.0和Qt 5.5.0。我在平板电脑上直接编译 我试着编译一些Qt-Quick和Qt小部件示例,如,和。它们都编译得很好,都支持鼠标和单触事件,但都不支持多触 我尝试修改最后一个示例的源代码,如下所示: bool ImageWidget::event(QEvent *event) { std::cout << GetEvent(event).t

我正在尝试创建一个支持多点触摸的QtWidgets应用程序。我使用的平板电脑安装了Ubuntu 14.04、QtCreator 3.5.0和Qt 5.5.0。我在平板电脑上直接编译

我试着编译一些Qt-Quick和Qt小部件示例,如,和。它们都编译得很好,都支持鼠标和单触事件,但都不支持多触

我尝试修改最后一个示例的源代码,如下所示:

bool ImageWidget::event(QEvent *event)
{
    std::cout << GetEvent(event).toStdString() << std::endl;
    if (event->type() == QEvent::Gesture)
        return gestureEvent(static_cast<QGestureEvent*>(event));
    return QWidget::event(event);
}

QString ImageWidget::GetEvent(const QEvent * ev) {
   static int eventEnumIndex = QEvent::staticMetaObject
         .indexOfEnumerator("Type");
   QString result;
   result.append("QEvent");
   if (ev) {
      QString name = QEvent::staticMetaObject
            .enumerator(eventEnumIndex).valueToKey(ev->type());
      if (!name.isEmpty()) result.append(name); else result.append(ev->type());
   } else {
      result.append( "foo");
   }
   return result;
}
其他应用程序(比如谷歌Chrome或Ubuntu本身)可以很好地处理多点触控,所以我猜这与Qt有关

XInput说明了当前安装的版本:

xinput version 1.6.1
XI version on server: 2.3
一般来说,我对Qt和Ubuntu比较陌生,所以这个问题其实很简单,但谷歌搜索没有给我结果。提前谢谢你的帮助

更新


此外,如果有人分享在Ubuntu或其他基于Linux的发行版上使用触摸屏与Qt的经验,我将不胜感激,这样我就可以知道这是操作系统中的错误还是与硬件有关。

要在单个小部件上实现多点触摸,我们需要不同的事件,而不是QeventMouseButonPress等。 有新的事件类型,如TouchBegin、TouchUpdate、TouchEnd和new TouchEventsClass


为了更好地理解,请点击链接

您使用的手势是什么?好吧,Ubuntu不支持收缩调整大小,但我可能支持wrong@marmistrz我试着捏和旋转。例如,我也知道pinch在google chrome中确实有效。我有在Fedora 19上使用多点触摸屏和基于qt quick的应用程序的经验。我并没有问题和配置,所有的作品从盒子。但是,我没有处理特殊的多点触控事件。另外,这个主题可能会对你有所帮助-我注意到Qt5.5中出现了一些严重的倒退,因为现在我的工作停留在5.4上,直到这些新的错误被修复,希望在一两年内,,,
xinput version 1.6.1
XI version on server: 2.3