我现在正在一个场景上画椭圆:
pen = QtGui.QPen(QtGui.QColor(QtCore.Qt.lightGray).darker(50))
for id, light in arrLights.iteritems():
angle = i*delta
circX = (w + x) * math.cos(angle)
circY = (h + y) * math.sin(angle)
item = callbackEllipse(light, hiveLight, circX, circY, w, h)
item.setAcceptHoverEvents(True)
item.setPen(pen)
if (light["status"]):
brush = QtGui.QBrush(QtGui.QColor(QtCore.Qt.lightGray))
else:
brush = QtGui.QBrush(QtGui.QColor(QtCore.Qt.lightGray).darker(150))
item.setBrush(brush)
self.scene().addItem(item)
self.writeText(light['name'], circX , circY, w, h)
i = i + 1
(callbackEllipse是一个类,其父类QGraphicsEllipseItem用于鼠标单击事件)
我正在研究如何部分填充这些椭圆(基于百分比),如下图所示:
椭圆
椭圆
椭圆
我已经搜索和尝试了一些事情,如多椭圆和绘制路径,但这影响了点击事件,我失去了'未填充'椭圆部分的边界。你知道吗
有人能帮忙吗?你知道吗
对于这些情况,有必要实现自定义项并覆盖绘制方法,使用QGraphicsEllipseItem作为基础,因为它足以添加百分比属性和填充颜色,如果要重新绘制,则必须调用
update()
。对于绘制,创建2个QPixmaps,第一个绘制矩形,第二个绘制椭圆,然后使用compositionMode连接它们相关问题 更多 >
编程相关推荐