我正在QGraphicsScene
使用QGraphicRectItems
编制堆积条形图。到目前为止,一切都有效,但似乎在用QGraphicsRectItems
创建setRect
之后改变了QGraphicsRect
直线的高度,未应用高度。奇怪的是,如果我重新运行程序,高度总是变为相同的“随机”值。
如果我再次更改QGraphicsRect
s的高度,使用相同的功能一切正常。在创建QGraphicsRectItems
以“注册”它之后,我还需要做些什么吗?
编辑:
如果我再次改变高度,也会发生同样的情况。我需要做两次以使杆正确调整它们的高度。
代码:
在我的函数中,我使用:
更改(堆叠的)accH = 0
for i, h in enumerate(data):
geo = rects[i].rect()
print "before\t\t\t", geo
print "target height\t\t", h
geo.setHeight(h)
geo.setY(accH)
rects[i].setRect(geo)
print "changed geometry\t", geo
print "geometry of updated rect", rects[i].rect()
print "___"
accH += h
print "-----"
的高度
rects
QGraphicsItem
是以前创建的data = [ 98. 263. 6710. 0.]
的列表。
使用before PySide.QtCore.QRectF(0.000000, 0.000000, 1.000000, 98.000000)
target height 98.0
changed geometry PySide.QtCore.QRectF(0.000000, 0.000000, 1.000000, 98.000000)
geometry of updated rect PySide.QtCore.QRectF(0.000000, 0.000000, 1.000000, 98.000000)
___
before PySide.QtCore.QRectF(0.000000, 98.000000, 1.000000, 166.000000)
target height 263.0
changed geometry PySide.QtCore.QRectF(0.000000, 98.000000, 1.000000, 263.000000)
geometry of updated rect PySide.QtCore.QRectF(0.000000, 98.000000, 1.000000, 263.000000)
___
before PySide.QtCore.QRectF(0.000000, 361.000000, 1.000000, 6351.000000)
target height 6710.0
changed geometry PySide.QtCore.QRectF(0.000000, 361.000000, 1.000000, 6710.000000)
geometry of updated rect PySide.QtCore.QRectF(0.000000, 361.000000, 1.000000, 6710.000000)
___
before PySide.QtCore.QRectF(0.000000, 7071.000000, 1.000000, -7068.000000)
target height 0.0
changed geometry PySide.QtCore.QRectF(0.000000, 7071.000000, 1.000000, 0.000000)
geometry of updated rect PySide.QtCore.QRectF(0.000000, 7071.000000, 1.000000, 0.000000)
___
:
首先运行:
before PySide.QtCore.QRectF(0.000000, 0.000000, 1.000000, 98.000000)
target height 98.0
changed geometry PySide.QtCore.QRectF(0.000000, 0.000000, 1.000000, 98.000000)
geometry of updated rect PySide.QtCore.QRectF(0.000000, 0.000000, 1.000000, 98.000000)
___
before PySide.QtCore.QRectF(0.000000, 98.000000, 1.000000, 263.000000)
target height 263.0
changed geometry PySide.QtCore.QRectF(0.000000, 98.000000, 1.000000, 263.000000)
geometry of updated rect PySide.QtCore.QRectF(0.000000, 98.000000, 1.000000, 263.000000)
___
before PySide.QtCore.QRectF(0.000000, 361.000000, 1.000000, 6710.000000)
target height 6710.0
changed geometry PySide.QtCore.QRectF(0.000000, 361.000000, 1.000000, 6710.000000)
geometry of updated rect PySide.QtCore.QRectF(0.000000, 361.000000, 1.000000, 6710.000000)
___
before PySide.QtCore.QRectF(0.000000, 7071.000000, 1.000000, 0.000000)
target height 0.0
changed geometry PySide.QtCore.QRectF(0.000000, 7071.000000, 1.000000, 0.000000)
geometry of updated rect PySide.QtCore.QRectF(0.000000, 7071.000000, 1.000000, 0.000000)
___
第二轮:
QGraphicsRectItem
我刚刚实现的目的是让这个输出为stackoverflow做好准备,问题似乎是每个height
的高度是正确的y value
- 它的setY
。我现在尝试先在上面的setHeight
上geo
然后QGraphicsRects
。然后打印表明QGraphicsView
的几何(rect)是正确的。但在{{1}}我没有看到任何变化。
答案 0 :(得分:0)
我最终找到了解决问题的方法。
我们要做的就是在setY
setHeight
之前致电QRect
,QGraphicsRect
定义{{1}}的几何图形。