0

Qt プラットフォームで PDF をレンダリングする Poppler Library の例を取り上げました。例のジェスチャー処理を書き込もうとしています。

サンプルは「doc.qt.digia.com/qq/qq27-poppler.zip」の URL からダウンロードできます。

簡単に言えば、この例には、QFrame と QWidget から派生した「QLabel」から派生した DocumentWidget.cpp があります。

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関数では、タップであるかどうかを確認し、それに応じてタップイベントを処理する予定です。ただし、私の例では、イベント関数が呼び出されていますが、タップ ジェスチャは処理されています。

必要なすべてのヘッダー ファイルをインクルードしました。クラスも前方宣言しました。

どこが間違っているのか教えてください。これらのジェスチャを 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 に答える