PyQt:获取QGraphicsGridLayout中QGraphicsWidgets的位置
我有一个比较简单的PyQt应用程序,我在里面用QGraphicsGridLayout放置了一些QGraphicsWidget的实例,并想用QGraphicsPath连接这些小部件。但是,不管我怎么尝试,开始和结束的小部件的位置总是返回(0, 0)。
我用一个递归函数来构建这个图形,这个函数会把小部件添加到场景和布局中。等递归函数完成后,布局会被添加到一个新的小部件里,然后这个小部件会被放到场景中,以便显示所有内容。在创建小部件的时候,边缘也会被添加到场景中。
我该如何获取网格布局中任何小部件的非零位置呢?
更新:我忘了提到,我已经在网格布局的小部件上尝试过pos()和scenePos()这两个方法。结果都是每个小部件的位置都返回(0, 0)。
1 个回答
1
如果你使用 QGraphicsItem::pos()
,它会给你这个物体在父级坐标系中的位置。使用 QGraphicsLayout 的时候,父级通常是包含这个物体的单元格,所以这个坐标可能就是零。
因为你想用路径连接小部件,所以你需要场景坐标来定义控制点:可以使用 QGraphicsItem::scenePos()
来获取你的 QGraphicsWidget
在场景中的位置。