2010-06-21 3 views
4

J'essaye de créer un échiquier. Toutes les pièces sont transparentes et le tableau ne l'est pas. Lorsque j'ai essayé d'obtenir l'élément cliqué en utilisant la fonction 'itemAt', il renvoyait toujours l'élément backGround (c'est-à-dire le tableau). Je soupçonne que du fait que les pièces sont transparentes, elles ne sont pas sélectionnées.qt - Dans QGraphicsScene je ne peux pas obtenir le bon article

+1

Lorsque vous dites que les éléments sont transparents, voulez-vous dire qu'ils ne sont pas visibles (c'est-à-dire que QWidget.isVisible() renvoie false)? itemAt() renvoie uniquement les éléments visibles. Il renvoie également l'élément le plus haut. Essayez les éléments (const QPointF & pos) pour obtenir tous les éléments à un point indépendamment de l'ordre z. –

Répondre

2

J'ai eu la réponse. J'ai essayé d'obtenir le event->pos(). Cela retournera le clic de souris dans les coordonnées de QGraphicsItem. Donc, je devrais utiliser event->scenePos().

Maintenant, je le reçois correctement.

1

Si vous utilisez votre propre coutume QGraphicsItem alors vous devrez peut-être passer outre shape(),

Si c'est une QGraphicsPixmapItem simple et il a un masque alpha, alors vous devez appeler setShapeMode().

Questions connexes