2012-03-17 11 views
0

私はQGraphicsViewとQGraphicsSceneを持つQtアプリを持っています。私はそれらの両方をサブクラス化し、両方でmouseeventsを処理したい。私はイベントをQGraphicsViewとQGraphicsSceneの両方に伝播する

 virtual void mousePressEvent(QMouseEvent* event); 

を使用して、個別に両方のクラスのためにこれを行うことができます。しかし、私はGraphicsViewでイベントを処理するとき、私はGraphicsSceneで、もはやそれを受信しません。これを修正するにはどうすればいいですか?つまり、grapchicsviewのイベントをgraphicssceneに渡しますか?

答えて

3

だけ前方mousePressEventあなたGraphicsViewの親に、これは、シーンのmousePressEventを呼び出します:

void MyGraphicsView::mousePressEvent(QMouseEvent * e) 
{ 
    // forward to scene (via default view behaviour) 
    QGraphicsView::mousePressEvent(e) ; 
    // ... 
} 

ところで、QGraphicsScene::mousePressEventはイベントの異なる種類(クラス)を持つ:QGraphicsSceneMouseEvent

+0

ありがとう、私が探していたものです。 – user1254962

+2

良いとしたら、この問題を解決済みとしてマークすることができます – azf

1

は基本実装を呼び出しますあなたのオーバーライドされた関数の最後に:

void MyView::mousePressEvent(QMouseEvent* event) 
{ 
    // do something 
    QGraphicsView::mousePressEvent(event); 
} 
関連する問題