1

是否可以绘制一个在圆弧处没有边框但在直线处有边框的饼形?我在下面附上了一张图片:

目前我已经通过首先调用drawPie()with来实现这一点painter.setPen(QtCore.Qt.NoPen),然后QLineF根据饼形的中心和角度分别绘制线条。 在此处输入图像描述

但问题是,如果角度不是 90 的倍数,则线位置与饼形不同步。附上另一张显示问题的图片。

在此处输入图像描述

有没有简单/优雅的方法来做到这一点?谢谢!

4

1 回答 1

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__(角度作为类属性可能不是您想要的),但这就是想法。

于 2013-10-10T08:39:00.790 回答