1

派生ウィジェットを作成していQGraphicsViewます。これは、とりわけ、制御フローグラフのように、その中のアイテム間の接続を作成する必要があります。しかし、接続を「描画」するメソッドを実装するのに問題があります

私は2つのアプローチを試しました:

  1. QGraphicsLineItemソースオブジェクトが起動されたときに派生オブジェクトを作成し、mouseMoveEvent(..)その後の移動ごとに更新します。線は正常に描画および更新されますが、マウスを移動するとイベントループが「ロック」されてマウス移動イベントのみが処理されるように見えるため、最終的には機能しません。したがって、他のオブジェクトのhoverEnterEvent(..)/ hoverMoveEvent(..)/等 メソッドは呼び出されません(これらは接続を完了するために必要です)。
  2. mouseMoveEvent(..)でインスタンスを作成QDragして、2つのオブジェクト間の接続を作成すると、2つのオブジェクトがドロップされると接続を形成できますが、このQDrag::exec()呼び出しでは、マウスの移動を他のオブジェクトに通知する手段がないため、最終的には機能しません。 -そのため、描画された接続は更新できません。

私は本当に2つの組み合わせが必要です。完璧な世界では、QDrag::exec()呼び出しによって他の種類のマウスの動きの通知が可能になるため、接続を表すオブジェクトを更新できます。誰か提案がありますか?

この質問に似ています。

4

1 に答える 1

1

私はこれを行うオープンソースウィジェットを持っています。それはPyQt用ですが、あなたが探しているものに役立つかもしれません。

これは、 http: //dev.projexsoftware.com/projects/projexuiのprojexuiフレームワークにあります。

探しているコードは、具体的にはprojexui / widgets/xnodewidgetにあるXNodeWidgetクラスです。

最終的に、私はマウスプレスイベントを使用してシーンを介した接続を開始し、イベントを無視しています(何らかのトリガーに基づいて-コントロールプレスやホットスポットゾーンなど)

お役に立てば幸いです。

(どのように見えるかの例は、Orbiterアプリのテーブルビューです-http ://www.projexsoftware.com/software/orbiter

于 2012-09-03T02:05:44.477 に答える