1 使用QPainterPath 和 QPainterPath::arcTo函数
void QPainterPath::arcTo(const QRectF & rectangle, qreal startAngle, qreal sweepLength)
创建一个弧形,占据了指定的 rectangle,以指定 startAngle 角度(0-360) 开始旋转 sweepLength 度
其中sweepLength为正数时是以逆时针旋转,为负数时是以顺时针进行旋转
class Example(QFrame):
def __init__(self):
super().__init__()
self.setFixedSize(600,800)
self.arcRadius=45
self.startPos=(100,100)
def paintEvent(self,event):
painter = QPainter(self)
painter.setBrush(Qt.green)
painter.setRenderHint(QPainter.Antialiasing)
#绘制第一段
path1 = QPainterPath()
path1.moveTo(*self.startPos)
path1.arcTo(QRectF(self.startPos[0],self.startPos[1]-self.arcRadius,self.arcRadius*2,self.arcRadius*2),180,-90)
print(path1.currentPosition())
path1.lineTo(145+100,55)
path1.lineTo(self.startPos[0],self.startPos[1])
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
app.exit(app.exec_())