4

私はこれにアプローチする方法にこだわっています。シーン内に QGraphicsItem があり、シーンからこの子にホバー イベントを渡しています。移動イベントが発生している間 (私はマウス トラッキングをオンにして mouseMoveEvent を使用しています)、別の QGraphicsItem をカーソルに追従させたいと考えています。

衝突検出、ドラッグアンドドロップなどは必要ありません。カーソルをたどるアイテムだけです。私が考えることができる唯一の2つの方法は...

  1. マウスが動いている間、マウスの位置に新しい QGraphicsItem を描画します。シーンをクリアし、すべてを再描画して、新しい位置を上に描画する必要があります。
  2. 何らかの方法でアニメーション フレームワークを使用し、マウスが移動するたびに QGraphicsItem をアニメーション化して、1 ミリ秒で新しいマウス位置に移動します。

私はおそらくこれを考えすぎているか、これを行う別の方法に気づいていません...何か提案はありますか?

4

1 に答える 1

4

私はこのようにそれをやった

  1. マウス カーソルで移動する GraphicsItemcursorを作成し、そのポインターをどこかに保存します (たとえば、シーン サブクラスに。私はツールセットを持っているので、これらのツールのいずれかにあります)。
  2. Z 値 ( QGraphicsItem::setZValue) を設定して、カーソルがシーン内の他のすべてのアイテムの上にペイントされるようにします。
  3. イベントを追跡QGraphicsScene::mouseMoveEventし、これらのイベントをcursorポインターに転送し、アイテムの位置を更新します

それでおしまい。Z値機能のおかげでシーンをクリアする必要がないことを除いて、ソリューション1に対応していると思います。

于 2012-03-22T08:14:12.660 に答える