是否可以在圆弧处绘制没有边框的饼形,但边框是直线?我附上了一张图片:
目前我已经通过首先使用drawPie()
调用painter.setPen(QtCore.Qt.NoPen)
,然后使用QLineF
根据饼形的中心和角度分别绘制线来实现此功能。
但问题是,如果角度不是90的倍数,则行位置不会与饼形同步。附上另一张显示问题的图片。
有一种简单/优雅的方法吗? 谢谢!
答案 0 :(得分:0)
假设您的自定义Pie是一个子类QGraphicsRectItem,您可以尝试这样的事情:
class CustomPie(QtGui.QGraphicsRectItem):
angle = 2000
def paint(self, painter, option, widget):
# Create the path to draw the lines
path = QtGui.QPainterPath()
path.moveTo(self.rect().width()/2, self.rect().height()/2)
path.lineTo(self.rect().width(), self.rect().height()/2)
path.arcMoveTo(self.rect(), self.angle/16) # arcMoveTo in degrees
path.lineTo(self.rect().width()/2, self.rect().height()/2)
# draw a pie with no Pen
painter.setPen(QtGui.QPen(QtCore.Qt.NoPen))
painter.setBrush(QtGui.QBrush(QtCore.Qt.lightGray))
painter.drawPie(self.rect(), 0, self.angle)
# Draw the path with a custom Pen
painter.setPen(QtGui.QPen(QtCore.Qt.black, 2))
painter.drawPath(path)
这里我们覆盖paint
来绘制Pie和路径(实际上与您自己的方法非常相似)。
你也必须覆盖__init__
(角度作为类属性可能不是你想要的)但这就是想法。