PyQt:在QGraphicsGridLayout中获取QGraphicsWidgets的位置

时间:2010-05-10 00:45:19

标签: python qt pyqt

我有一个相当简单的PyQt应用程序,其中我将QGraphicsWidget的实例放在QGraphicsGridLayout中,并希望将小部件与使用QGraphicsPath绘制的线连接起来。不幸的是,无论我尝试什么,我总是得到(0,0)作为开始和结束小部件的位置。

我正在使用递归函数构建图形,该函数将小部件添加到场景和布局中。递归函数完成后,布局将添加到新窗口小部件中,该窗口小部件将添加到场景中以显示所有内容。在创建小部件时,边缘将添加到场景中。

如何在网格布局中获得任何小部件的非零位置?

更新:我忘了提到我在网格布局中的小部件上尝试了pos()和scenePos()。两者总是返回(0,0)作为网格中每个小部件的位置。

1 个答案:

答案 0 :(得分:1)

如果您使用QGraphicsItem::pos(),它会为您提供父坐标中项目的位置。使用QGraphicsLayout时,父级可能是包含对象的单元格,因此坐标等于零。

由于您希望使用路径连接小部件,因此您需要使用场景坐标来定义控制点:使用QGraphicsItem::scenePos()获取场景中QGraphicsWidget的位置。