Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt手势。不接收Qsignature事件_C++_Windows_Qt - Fatal编程技术网

C++ Qt手势。不接收Qsignature事件

C++ Qt手势。不接收Qsignature事件,c++,windows,qt,C++,Windows,Qt,我正在尝试在我的小部件(QWidget的子类)中获取Q手势事件。我的构造函数中包含以下内容: setAttribute(Qt::WA_AcceptTouchEvents); setAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents); grabGesture(Qt::SwipeGesture); grabGesture(Qt::PanGesture); grabGesture(Qt::PinchGesture); 我有自己的事件函数: bool M

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

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;
}
在Windows7上,我只接收鼠标输入事件,其他什么都不接收。(我正在使用ms surface sdk输入模拟器生成建议的触摸事件)。我偶尔会得到这个信息

QGestureManager::deliverEvent: could not find the target for gesture.
但这不容易复制


为什么我没有收到手势事件?

您需要有一个父主窗口才能抓取手势,请参阅。

您不能在小部件上设置
Qt::WA_touchpad acceptsingletouchEvents
。的文档在前面的一节中列出了相应的属性

警告:小部件的作者不得设置或清除此标志


在以前的文档中(例如),这一点更为明确。

我尝试确保我的小部件有一个QMainWindow父窗口,但这没有帮助。我还尝试了ImageSignatures qt示例,使用ms surface sdk输入模拟器无法识别任何手势。我还在iPad1上的ios 5上尝试了ImageSignatures示例,但也没有识别出任何手势。MS Surface SDK输入模拟器是否可能不会生成与Qt事件系统兼容的触摸事件?从你描述的情况来看,情况似乎确实如此。我有一个覆盆子圆周率与7“官方多触摸屏和Qt的触摸功能工程没有任何问题。