23

派生要素QGraphicsViewを含むから派生したクラスがあります。QGraphicsItemこれらの要素の上にマウス カーソルが置かれるたびに色が変わるようにしたいので、hoverEnterEvent(およびhoverLeaveEvent)を実装しました。

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

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

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

それでも、運が悪い。私は何を間違っていますか?

4

2 に答える 2

33

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

于 2010-05-30T21:39:47.203 に答える
5

私の場合、QGraphicsViewクラスの実装でmouseMoveEventをオーバーライドすると、ホバー イベントは機能しません。への呼び出しを追加してこれを修正しました

QGraphicsView::mouseMoveEvent(event);

これはイベントを親に伝達し、親はそれをすべてのシーン アイテムに送信しました。

于 2016-12-20T22:55:36.420 に答える