我想用QGraphicsView视图框架画线,将两个QGraphicsPixmap用带箭头的线连接起来,
但是线的箭头大小不好控制,我的QGraphicsPixmap是固定大小的,我想要线条和箭头也是
不随着鼠标滚轮的变化而变化
代码如下
void ConnectItemsLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
// 判断图形项是否存在相交,碰撞检测
if(m_pStartItem->collidesWithItem(m_pEndItem))
{
return;
}
QPen pen(Qt::black);
pen.setWidth(2);
pen.setCosmetic(true);
painter->setPen(pen);
painter->setBrush(Qt::white);
painter->setRenderHint(QPainter::Antialiasing, true);
// 获取需要被连接的图元的位置,然后绘制线
QLineF centerLine(m_pStartItem->pos(),m_pEndItem->pos());
setLine(centerLine);
double angle = std::atan2(-line().dy(),line().dx()); //反正切 [-PI,PI] 直线与水平方向夹角度数
QPointF arrowP1 = QPointF(line().p2()) +
QPointF(sin(angle + M_PI / 3) * -100, //计算对边
cos(angle + M_PI / 3) * -100); //计算临边
QPointF arrowP2 = QPointF(line().p2()) +
QPointF(sin(angle + M_PI - M_PI / 3) * -100,
cos(angle + M_PI - M_PI / 3) * -100);
m_arrowHead.clear();
m_arrowHead<<m_pEndItem->pos() << arrowP1 << arrowP2;
painter->drawLine(line());
painter->drawPolygon(m_arrowHead);
}
我想要达到的结果
实际情况:
放大倍数,箭头也大,缩小,箭头也小,但是那个绿色图标就是固定大小
想要效果
想和这种效果类似,即便缩放,线条比列不变。