QChart添加跟随鼠标的十字线

您所在的位置:网站首页 十字交叉线条 QChart添加跟随鼠标的十字线

QChart添加跟随鼠标的十字线

2024-03-12 15:42| 来源: 网络整理| 查看: 265

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

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

老套路,一图胜千言

请添加图片描述

核心代码,x_line和y_line是一个QGraphicsLineItem void ZChartView::mouseMoveEvent(QMouseEvent *e) { //打印鼠标位置处的点的坐标值 qDebug()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()setVisible(true); } void ZChartView::leaveEvent(QEvent *event) { qDebug()setVisible(false); }

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3