QLineF line(lastPoint, endPoint);
double angle = std::atan2(-line.dy(), line.dx());
qreal arrowSize = 10;
QPointF arrowP1 = line.p2() - QPointF(sin(angle + M_PI / 3) * arrowSize,
cos(angle + M_PI / 3) * arrowSize);
QPointF arrowP2 = line.p2() - QPointF(sin(angle + M_PI - M_PI / 3) * arrowSize,
cos(angle + M_PI - M_PI / 3) * arrowSize);
QPolygonF arrowHead;
arrowHead << line.p2() << arrowP2 << arrowP1;
painter.drawLine(line);
painter.drawLine(endPoint, arrowP1);
painter.drawLine(endPoint, arrowP2);
效果图:
如果想画实心的三角箭头
可以使用drawPolygon画一个封闭的三角形区域,然后使用QBrush去填充;