0

私は自分自身のQGraphicsScene嘘つきのサブクラスを持ってQGrapnhicsViewいます (私はそれをオーバーライドしませんでした)。私のシーンは、いくつかのマウス イベント (ダブルおよびシングル クリック) を処理します。しかし同時に、ビューをカーソル ( QtGui.QGraphicsView.ScrollHandDrag) でスクロールできるようにしたいです。シーンにバブルしないように、スクロールが既に発生している場合、ビューレイヤーでマウスイベントをブロックするにはどうすればよいですか?

4

2 に答える 2

0

QGraphicsViewmouseMoveEventから関数を実装し、イベントを受け入れる必要があります。

protected:
virtual void QGraphicsView::mouseMoveEvent(QMouseEvent * event)
{
    QPoint mouseLocation = event->pos();
    // Do stuff
    event->accept();
}

マウス イベントを受け入れると、親クラスはそのイベントを処理できなくなります。

これにより、マウス移動イベントが伝播されなくなります。やりたいことに応じて、、、、または関数を再実装することもできますmouseDoubleClickEvent。それらの関数定義はすべてQGraphicsView ドキ​​ュメントにあります。mousePressEventmouseReleasEventwheelEvent

于 2013-08-02T16:23:07.857 に答える