唐宋元明沁清 2022-11-07 14:15 采纳率: 53.8%
浏览 10
已结题

关于#QGraphics#的问题,如何解决?(关键词-map)

我想用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);
}
我想要达到的结果

实际情况:

img

img


放大倍数,箭头也大,缩小,箭头也小,但是那个绿色图标就是固定大小

想要效果

img


想和这种效果类似,即便缩放,线条比列不变。

  • 写回答

1条回答 默认 最新

  • 木风可可 2022-11-08 09:26
    关注

    在paint里面通过判断缩放倍数,对箭头进行对应的绘制。下面这是官方示例 4000 chips。

    img

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月18日
  • 创建了问题 11月7日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表