質問

私は派生したクラスを持っています QGraphicsView, 、 を含む QGraphicsItem- 由来の要素。マウスカーソルがそれらの上に浮かぶたびに、これらの要素に色を変えたいので、私は実装しました hoverEnterEvent (と hoverLeaveEvent):

void MyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
    update (boundingRect());
}

ただし、このイベントハンドラーコードは実行されません。マウストラッキングを明示的に有効にしました:

MyGraphicsView::MyGraphicsView(MainView *parent) :
    QGraphicsView(parent)
{
    setMouseTracking(true);
    viewport()->setMouseTracking(true);
    ...
}

それでも、運はありません。私は何が間違っているのですか?

役に立ちましたか?

解決

修正しました。使用する必要があります setAcceptHoverEvents(true) 私のコンストラクターで QGraphicsItem- 派生したクラス。

他のヒント

私の場合、私が覆されてもホバーイベントは機能しません MouseMoveEvent 私の実装で qgraphicsView クラス。通話を追加してこれを修正しました

QGraphicsView::mouseMoveEvent(event);

イベントを親に伝播し、それがすべてのシーンアイテムにそれを送り出しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top