Qt绘制万向箭头_初始化

void VesselWidget::drawCustomLine(QPainter* painter,QPoint startp,QPoint stopp,const QColor& color)
{
// 初始化
painter->resetTransform(); // 重设画笔
painter->setPen(QPen(Qt::black, 2));
// 绘制线段
if(startp.isNull() == false&&stopp.isNull() == false){
QLineF line(startp,stopp);
painter->drawLine(line);
// 绘制箭头
QLineF v = line.unitVector();
if(!v.isNull()){
v.setLength(20); // 改变单位向量的大小,实际就是改变箭头长度
v.translate(QPointF(line.dx(), line.dy()));
QLineF n = v.normalVector(); // 法向量
n.setLength(n.length() * 0.5);//这里设定箭头的宽度
QLineF n2 = n.normalVector().normalVector();// # 两次法向量运算以后,就得到一个反向的法向量.
QPointF p1 = v.p2();
QPointF p2 = n.p2();
QPointF p3 = n2.p2();
painter->setBrush(QBrush(Qt::black));
if(p1.isNull() == false&&p2.isNull() == false){
QLineF lineA(p1,p2);
if(lineA.length() > 4){
painter->drawLine(lineA);
}
}
if(p2.isNull() == false&&p3.isNull() == false){
QLineF lineB(p2,p3);
if(lineB.length() > 4){
painter->drawLine(lineB);
}
}
if(p3.isNull() == false&&p1.isNull() == false){
QLineF lineC(p3,p1);
if(lineC.length() > 4){
painter->drawLine(lineC);
}
}
}

}
}