0

我以 Poppler Library 为例,在 Qt 平台上渲染 PDF。我正在尝试为示例编写手势处理。

该示例可以从“doc.qt.digia.com/qq/qq27-poppler.zip”网址下载。

简而言之,该示例有一个 DocumentWidget.cpp,它派生自“QLabel”,而“QLabel”又派生自 QFrame 和 QWidget。

现在由于 QLabel 是从 QWidget 继承的,我已经开始实现手势处理。

在 DocumentWidget.hi 中添加了以下功能

protected:
 bool event( QEvent* e );

在 DocumentWidget.cpp 构造函数中 grabGesture( Qt::TapGesture )

bool DocumentWidget :: event( QEvent* e )
{
  if( e->type() == ( Qt :: TapGesture )
     gestureEvent();
}

在上面的gestureEvent函数中,我尝试检查它是否是Tap并相应地计划处理tap事件。但是,在我的示例中,事件函数被调用,但点击手势正在被处理。

我已经包含了所有必要的头文件。我也已经提前宣布了这些课程。

你能告诉我哪里出错了。我们不能为 QLabel 处理这些手势吗?

先感谢您。

钱德M

4

1 回答 1

0

您已经TagGesture在事件处理程序中进行检查。gestureEvent()所以你不需要在函数中再次检查它。此外,在消费完事件后,您必须return true;声明该事件已被消费。

如果偶数不是 TapGesture 然后像这样将它传递给 QWidget 本身。

 if( e->type() == ( Qt :: TapGesture )
     gestureEvent();
 else
     return QWidget::event(e);

您可以在此处找到有关均匀处理的文档。

于 2012-10-17T07:29:34.920 回答