QNativeGesture是否适用于Linux / Windows,因为硬件支持它?

时间:2016-10-27 15:24:39

标签: linux qt qt5

我想基于Qt5在我的应用程序中添加滑动手势。该应用程序主要在Linux(笔记本电脑)上运行。我只是无法编写代码,因为我无法理解如何使用该类(没有示例代码可用)。

触控板驱动程序支持滑动手势(libinput)。此外,synaptics(至少在我的系统上)支持多指触摸。

有人可以指导我如何使用API​​,并提供一些示例代码吗?

1 个答案:

答案 0 :(得分:0)

你的意思是QNativeGestureEvent?您可能不应该使用QNativeGestureEvent并使用更高级别的框架:请参阅Gestures in Widgets and Graphics ViewQNativeGestureEvent过去仅在OS X上可用;它并不是一个广泛消费的API。

唉,QNativeGestureEvent被传递给小部件本身。你会通过重新实现QObject::event并对事件采取行动来对它们作出反应:

class MyWidget : public QWidget {
  typedef base_type = QWidget;
  ...
  bool QWidget::event(QEvent * ev) override {
    if (ev->type() == QEvent::NativeGesture) {
      auto g = static_Cast<QNativeGestureEvent*>(ev);
      ...
      return true; // if event was recognized and processed
    }
    return base_type::event(ev);
  }
};

但不要这样做。