为什么 QGraphicsGridLayout 不处理放置在场景中的项目的行和列放置?



到目前为止,我有以下代码:

p1 = QGraphicsWidget(self.scene.addItem(QGraphicsPixmapItem(self.pixmap)))
p2 = QGraphicsWidget(self.scene.addItem(QGraphicsPixmapItem(self.pixmap)))
self.grid.addItem(pixmap, 0, 0)
self.grid.addItem(pixmap2, 0,1 )
f = QGraphicsWidget()
f.setLayout(self.grid)
self.scene.addItem(f)

出于某种原因,这些相等的像素图被放置在彼此上。而我则想挨着对方。

w1 = self.scene.addItem(QGraphicsPixmapItem(self.pixmap))
w1.setPos(0,0)
pixmap = QGraphicsWidget(w1)
w2 = self.scene.addItem(QGraphicsPixmapItem(self.pixmap))
w2.setPos(200,0)
pixmap2 = QGraphicsWidget(w2)
self.grid.addItem(pixmap, 0, 0)
self.grid.addItem(pixmap2, 0,1 )
f = QGraphicsWidget()
f.setLayout(self.grid)
self.scene.addItem(f)

这段代码工作过度,但QGraphicsGridLayout不应该处理放置吗?

QGraphicsScene.addItem()返回None

您没有将像素映射项目添加到QGraphicsWidget,而是直接将它们添加到场景中。此外,QGraphicsWidget构造函数中的第一个参数是,因此它无论如何都无效;结果是,您实际上向布局中添加了空的QGraphicsWidgets。

让我们按照执行顺序分析前两行,这就是问题所在:

QGraphicsWidget(self.scene.addItem(QGraphicsPixmapItem(self.pixmap)))
^^^^^^^^^^^^^^^^^^^(^^^^^^^^^^^)
^^^^^^^^^^^^^^^^^^(               1.               )
^^^^^^^^^^^^^^^(         2.                                         )
3.

请记住,使用";嵌套的";函数调用意味着外部调用总是使用内部的返回值,就像带括号的数学表达式一样,的内部上述情况下,3将使用2的返回值,该返回值将与1的返回值一起执行。

当前参数结果返回对象QPixmap创建一个项目,该项目将显示给定的像素图QGraphicsPixmapItem实例将给定项目添加到场景>None
命令
1。QGraphicsPixmapItem(self.pixmap)QGraphicsPixmapItem的实例
2。self.scene.addItem(...)None
3。QGraphicsWidget(...)创建一个空的QGraphicsWidget,不带父级QGraphics Widget实例

相关内容

  • 没有找到相关文章

最新更新