c++ - Qt 手势。没有收到 qgesture 事件

标签 c++ windows qt

我正在尝试在我的小部件(QWidget 的子类)中获取 QGesture 事件。我的构造函数中有以下内容:

setAttribute(Qt::WA_AcceptTouchEvents);
setAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents);
grabGesture(Qt::SwipeGesture);
grabGesture(Qt::PanGesture);
grabGesture(Qt::PinchGesture);

我有自己的事件函数:

bool MyWidget::event(QEvent *event)
{
  if(event->type() == QEvent::Gesture)
  {
    TRACE("Gesture");
  }
  if(event->type() == QEvent::GestureOverride)
  {
    TRACE("Gesture override");
  }
  if(event->type() == QEvent::Enter)
  {
    TRACE("Mouse enter");
  }
  return true;
}

在 Windows 7 上,我收到鼠标输入事件,但没有收到其他任何事件。 (我正在使用 ms surface sdk 输入模拟器来生成建议的触摸事件 here )。偶尔我会收到消息

QGestureManager::deliverEvent: could not find the target for gesture.

但不能轻易重现。

为什么我收不到手势事件?

最佳答案

您不得在小部件上设置 Qt::WA_TouchPadAcceptSingleTouchEventsenum Qt::WidgetAttribute 的文档在前面的部分中列出相应的属性

Warning: This flag must never be set or cleared by the widget's author.

这在早期的文档中更为明确(例如 enum Qt::WidgetAttribute for Qt 4.8)。

关于c++ - Qt 手势。没有收到 qgesture 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21548898/

相关文章:

c++ - 在 Windows 上增强线程和进程清理

c# - 找出用户属于哪个组

c - Vim:使用 gcc 编译

c++ - 可能的 Qt5 错误 : calling setFixedSize() disables the main window's close button (under Win7)

c++ - 如何监控一个ZeroMQ服务器是否存在?

c++ - 如何实现相互引用的类?

c++ - 找出除 "1"作为公因数以外的 n 个数的公因数

c++ - 一端优先的随机算法

qt - Qml Text Item如何设置行间距?

android - --target native-lib 不是一个目录