2010-09-01 5 views
0

J'ai un gui qui montre le fichier .svg. Lorsque l'utilisateur clique (ou mieux lorsque l'on clique), mouseReleaseEvent est appelé.QT - SvgDisplayWidget - Sur quel ID a-t-on cliqué?

Comment puis-je savoir quelle image SVG en particulier (l'ID) a été cliquée?

Je voudrais utiliser est ici:

void SvgDisplayWidget::mouseReleaseEvent(QMouseEvent *event) {} 

Merci

Répondre

1

Je ne comprends pas la question. Vous savez quel widget a reçu l'événement dans sa fonction mouseReleaseEvent, car il s'agit du même widget où ce code est en cours d'exécution. De là, vous pouvez accéder à toutes les données de l'implémentation de ce widget et c'est à vous de trouver l'image SVG à laquelle elle correspond.

+0

Merci, mais comment trouver l'image SVG à laquelle elle correspond? Dans le fichier SVG, il y a des ID pour chaque image. J'aimerais trouver cet identifiant. Je ne veux pas obtenir les données x, y, width, height du fichier svg lui-même car cette position pourrait être différente sur l'interface graphique si elle était déplacée lors de l'exécution via des transformations matricielles. – yper

+0

OK, je comprends maintenant ce que vous demandez et il semble qu'il n'y a pas de solution facile, Qt ne fournit pas ce type de recherche dans le fichier SVG qu'il a rendu. – teukkam

0

Vous pouvez récupérer le QGraphicsItem le plus haut à une position donnée en utilisant la méthode QGraphicsView :: itemAt.

void SvgView::mouseMoveEvent(QMouseEvent * event){ 
    QGraphicsItem* it = itemAt(event->pos()); 
    if(it){ 

    } 
    QGraphicsView::mouseMoveEvent(event); 
} 
+1

Mais cela ne vous aiderait pas à trouver l'ID de l'ID * à l'intérieur * de l'image SVG ... Désolé. – tibur

Questions connexes