2010-05-10 5 views
3

J'ai une application PyQt assez simple dans laquelle je place des instances d'un QGraphicsWidget dans un QGraphicsGridLayout et je veux connecter les widgets avec des lignes tracées avec un QGraphicsPath. Malheureusement, peu importe ce que j'essaie, je récupère toujours (0, 0) la position des widgets de début et de fin.PyQt: Obtenir la position de QGraphicsWidgets dans un QGraphicsGridLayout

Je construis le graphique avec une fonction récursive qui ajoute des widgets à la scène et à la mise en page. Une fois la fonction récursive terminée, la mise en page est ajoutée à un nouveau widget, qui est ajouté à la scène pour tout afficher. Les bords sont ajoutés à la scène lorsque des widgets sont créés.

Comment obtenir une position non nulle de l'un des widgets dans la disposition de la grille?

Mise à jour: J'ai oublié de mentionner que j'ai essayé à la fois pos() et scenePos() sur les widgets dans la disposition de la grille. Les deux retournent toujours (0, 0) comme position pour chaque widget de la grille.

Répondre

1

Si vous utilisez le QGraphicsItem::pos(), il vous donne la position de l'élément dans les coordonnées parentes. Lors de l'utilisation de QGraphicsLayout, le parent est probablement la cellule contenant l'objet, donc la coordonnée est égale à zéro.

Puisque vous voulez connecter des widgets avec un chemin, vous aurez besoin de coordonnées de scène pour définir les points de contrôle: utilisez QGraphicsItem::scenePos() pour obtenir la position de votre QGraphicsWidget dans la scène.

+0

Ah - désolé, j'ai oublié de le mentionner ci-dessus. J'ai essayé à la fois pos() et scenePos(). Les deux retournent un point (0, 0) pour tous les widgets que j'ai placés dans la disposition de la grille. –

+0

Également ayant ce problème. J'ai essayé à la fois scenePos() et pos(). J'ai également essayé la fonction mapToScene. Toujours 0,0 "pos = self.upstreamconnect.mapToScene (self.upstreamconnect.pos())" – jspada

Questions connexes