1

QPixmapを保持するQLabelの(x、y)位置に、いくつかのフォントパラメータ(サイズ20フォントなど)を含む単純なテキスト(たとえば文字「x」)を描画したとします。これらの描画されたxの1つで「正確に」クリックが発生したときにマウスイベントを検出するためにオーバーライドする必要がある関連メソッドは何ですか。

私の最初の本能は、描画されたポイントの保存された(x、y)位置を検索することです。マウスの現在の位置が、その(x、y)位置の周りの小さなボックス内にある場合、ユーザーが調整できるようにするなど、いくつかの機能を実行します。その時点で、そうでない場合は通常のマウスイベント機能を実行します。ただし、私が操作しているポイントは、目などの人間の顔の追跡された特徴です。多くの場合、誰かがカメラなどに対して奇妙な角度で向きを変えているとき、2つの異なる追跡されたポイントがそれぞれの真上にある可能性があります。他の。したがって、ユーザーが目的のキーポイントにどれだけ集中しても、マウスイベント処理のロジック基準にある程度の許容範囲がある場合、ロジックは2つの異なるポイントがクリックされていると信じる場合があります。

クリック基準を不当に正確にすることなく、この種の問題を最小限に抑えたいと思います。テキストの選択を解釈するための根本的に異なる方法はありますか(テキストがピックスマップに描画されるとき、テキストが(x、y)で描画されたことを認識する、そのピックスマップの何らかの属性になりますか?ユーザーが何をクリックしようとしている必要がありますか?)

PyQTでのこの種のアドバイスや例をいただければ幸いです。

4

1 に答える 1

0

前の質問でユーザー インタラクションの計画についてほのめかしましたが、Graphics View Frameworkの方が、あなたがやろうとしていることにより適している可能性があることは明らかです。

これは、ウィジェットでの描画とは明らかに異なります。このフレームワークを使用して、グラフィック アイテム (QGraphicsItem サブクラス) で構成されるシーンを作成し、そのシーンをビューに割り当てます。ビューを通じて、シーン内のアイテムを操作できます。クリック イベントを生成したり、ドラッグすることもできます。ドキュメントは膨大で複雑に見えますが、概念的には理解しやすいと思います。

于 2011-06-03T01:44:28.213 に答える