PyQt:获取QGraphicsGridLayout中QGraphicsWidgets的位置

3 投票
1 回答
3119 浏览
提问于 2025-04-15 22:32

我有一个比较简单的PyQt应用程序,我在里面用QGraphicsGridLayout放置了一些QGraphicsWidget的实例,并想用QGraphicsPath连接这些小部件。但是,不管我怎么尝试,开始和结束的小部件的位置总是返回(0, 0)。

我用一个递归函数来构建这个图形,这个函数会把小部件添加到场景和布局中。等递归函数完成后,布局会被添加到一个新的小部件里,然后这个小部件会被放到场景中,以便显示所有内容。在创建小部件的时候,边缘也会被添加到场景中。

我该如何获取网格布局中任何小部件的非零位置呢?

更新:我忘了提到,我已经在网格布局的小部件上尝试过pos()和scenePos()这两个方法。结果都是每个小部件的位置都返回(0, 0)。

1 个回答

1

如果你使用 QGraphicsItem::pos(),它会给你这个物体在父级坐标系中的位置。使用 QGraphicsLayout 的时候,父级通常是包含这个物体的单元格,所以这个坐标可能就是零。

因为你想用路径连接小部件,所以你需要场景坐标来定义控制点:可以使用 QGraphicsItem::scenePos() 来获取你的 QGraphicsWidget 在场景中的位置。

撰写回答