#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsLineItem>
#include <QMouseEvent>
#include <QPen>
#include <QGraphicsSceneMouseEvent>
#include <QWidget>
#include <QPainter>
#include <QPointF>
#include <QtMath>
class ArcWidget : public QWidget
{
public:
ArcWidget(QWidget *parent = nullptr) : QWidget(parent) {
// 初始化三个点 A, B, C
p1 = QPointF(100, 100); // 点A (起始点)
p2 = QPointF(200, 100); // 点B (中间点)
p3 = QPointF(200, 200); // 点C (终点)
}
protected:
void paintEvent(QPaintEvent *event) override {
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
// 绘制三个点
painter.setPen(Qt::red);
painter.drawEllipse(p1, 5, 5);
painter.drawEllipse(p2, 5, 5);
painter.drawEllipse(p3, 5, 5);
// 计算圆心和半径
QPointF center = calculateCircleCenter(p1, p2, p3);
qreal radius = QLineF(center, p1).length();
// 计算起始角度和终止角度
qreal startAngle = calculateAngle(center, p1); // 起始角度
qreal endAngle = calculateAngle(center, p3); // 终止角度
// 创建 QPainterPath 绘制圆弧
QPainterPath path;
path.moveTo(p1);
path.arcTo(center.x() - radius, center.y() - radius, 2
08-16
984

04-20
534
