QChart添加跟随鼠标的十字线

如题,纠结了很久,结果用了很简单的办法实现了,QT的强大不言而喻

需要了解个前提,QGraphices绘图框架,其中包含QGraphicsScene,QGraphicsView,QGraphicsItem,这么说吧QChart就是一个item,QChartView就是一个View,当然它自带一个Scene。曾经看到过这么一个比喻,感觉无比贴切,QGraphicsItem就是天上的星星,QGraphicsScene就是星空,QGraphicsView就是一扇窗户,能看到那些星星取决于这扇窗户,同一片星空可以有很多扇窗户去观察它,但星空还是那一片星空,星星还是那个星星。

老套路,一图胜千言

请添加图片描述

核心代码,x_line和y_line是一个QGraphicsLineItem

void ZChartView::mouseMoveEvent(QMouseEvent *e)
{
    //打印鼠标位置处的点的坐标值
    qDebug()<< this->chart()->mapToValue(e->pos());//把鼠标坐标值转化为画出的图中的坐标
    //以防父类的实例接收不到mouseMoveEvent事件。
    QChartView::mouseMoveEvent(e);//调用父类的重写方法。本行程序不同于e->ignore(),ignor是把事件继续向父控件(一般其父控件就是ui界面)传递,而不是向父类传递
    x_line->setLine(e->x(),0,e->x(),this->height());
    y_line->setLine(0,e->y(),this->width(),e->y());

}

void ZChartView::enterEvent(QEvent *event)
{
    qDebug()<<"鼠标进入了ChartView";
    x_line->setVisible(true);
    y_line->setVisible(true);
}

void ZChartView::leaveEvent(QEvent *event)
{
    qDebug()<<"鼠标离开了ChartView";
    x_line->setVisible(false);
    y_line->setVisible(false);
}

可以看到,非常简单,对一个线条对象setLine就可以了

  • 13
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 35
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

x县豆瓣酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值