1

QGraphicsScene を使用する Qt4 で小さな GUI ユーティリティを作成しています。項目の 1 つは、マウスを動かすと水平面内でマウスを追跡し、修飾キーを押したままにすると、項目の回転を変更できます。アイテムを回転するとき、マウス カーソルを曲線の矢印 (または何か) に変更し、視覚的にその場でロックしたいので、移動するとアイテムに影響しますが、マウス カーソル自体には影響しません。

修飾子を放すと、(以前は見えなかった) カーソルが元の位置に戻ります。これは、後でアイテムがマウスの新しい水平位置に「ジャンプ」するのを防ぐためです。これが私の主な問題です。

次のような恐ろしいことを行わずに Qt4 でこれを実装する方法が本当にわかりません。

  • モディファイアが押されたとき、現在のマウス位置を保存します
  • カーソルを何もないビットマップに切り替えます
  • なんとか元の場所に偽のカーソルを描く(!?)
  • 偽のカーソルを削除し、完了したらマウスの位置を元に戻します

誰かがこれを達成するためのより良い方法を考えることができれば、非常に感謝しています. そもそも固定マウス カーソルのアイデア全体に固執しているわけではありませんが、この 1 つの問題を回避するために考えることができる唯一の方法は、それ以外の場合は非常にうまく機能する制御スキームです。

編集:上で概説したがらくたスキームを試してみたところ、プログラムでマウスの位置を移動する際に問題が発生しました。以前に同様のシステムをどこで使用したかをまだ思い出そうとしています。基本的にはロータリーノブでした。それをクリックしてマウスを上下に動かすと、ノブが回転します。マウス ボタンを放すと、ポインターは最初に置いたノブ上の場所に戻ります。

4

1 に答える 1

1

これが行われている間に、イベントフィルターを使用してQMouseEventsをキャッチするのはどうですか?

于 2010-03-04T18:21:19.813 に答える