2016-04-02 18 views
1

Qtが新しくなりました。 QGraphicsScene内のQGraphicsSvgItemのクリックイベント/シグナルをキャプチャするにはどうすればよいですか?私は次のコードを持っています:QGraphicsSvgItemのクリックイベント/シグナルをキャプチャするには

QGraphicsScene *scene = new QGraphicsScene(this); 
QGraphicsSvgItem *svgItem = new QGraphicsSvgItem(":/SomeGraphic.svg"); 
svgItem->scale(0.1, 0.1); 
svgItem->setPos(-200,-200); 
scene->addItem(svgItem); 

svgItemのclick()シグナルをスロットに接続できますか?

答えて

2

QGraphicsSvgItemにはclick()シグナルがありません。

QGraphicsItem上のマウスイベントをキャプチャするために多くの方法があります。

  1. あなたはQGraphicsSvgItemをサブクラス化しvoid mousePressEvent(QGraphicsSceneMouseEvent * event)を実装することができます。 QGraphicsItem::mousePressEvent()

  2. QGraphicsSceneまたはQGraphicsViewにイベントフィルタをインストールし、マウスイベントをインターセプトして、マウスがアイテムに押し込まれているかどうかを確認できます。 QObject::installEventFilter()

  3. また、QGraphicsSvgItemにイベントフィルタを直接インストールすることもできます。 QGraphicsItem::installSceneEventFilter()

  4. QGraphicsSceneをサブクラス化し、mousePressEvent()を実装することができます。 QGraphicsScene::mousePressEvent

  5. QGraphicsViewをサブクラス化し、mousePressEvent()を実装することができます。 QWidget::mousePressEvent

関連する問題