Qt 5.5 - 触控/多点触控无法与Ubuntu 14.04配合使用

时间:2015-09-11 21:04:46

标签: c++ linux qt ubuntu touch

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

我尝试编译了一些Qt Quick和Qt Widgets示例,例如thisthisthis one。所有这些都编译得很好,所有这些都支持鼠标和单点触摸事件,但没有一个支持多点触摸。

我尝试修改最后一个例子的源代码:

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;
}

当我尝试触摸拖动项目时,我得到的所有输出都是一些鼠标事件:

QEventMouseButtonPress
QEventMouseMove
QEventMouseMove
QEventMouseMove
QEventMouseMove
QEventMouseMove
QEventMouseMove
QEventMouseButtonRelease
QEventLeave

其他应用程序(如Google Chrome或Ubuntu本身)处理多点触控很好,所以我猜它与Qt有关。

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

xinput version 1.6.1
XI version on server: 2.3

我对Qt和Ubuntu一般都比较新,所以问题实际上可能非常简单,但谷歌搜索没有给我任何结果。感谢您的帮助。

更新

另外,如果有人在Ubuntu或其他基于Linux的发行版上分享使用Qt触摸的经验,我会很感激,这样我就可以弄清楚它是OS中的错误还是与硬件有关。

1 个答案:

答案 0 :(得分:0)

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

为了更好地理解,请点击链接http://www.slideshare.net/qtbynokia/using-multitouch-and-gestures-with-qt