如题,纠结了很久,结果用了很简单的办法实现了,QT的强大不言而喻
需要了解个前提,QGraphices绘图框架,其中包含QGraphicsScene,QGraphicsView,QGraphicsItem,这么说吧QChart就是一个item,QChartView就是一个View,当然它自带一个Scene。绘图框架那三个对象的关系就不展开了,可以自行查资料。
老套路,一图胜千言
核心代码,x_line和y_line是一个QGraphicsLineItem
void ZChartView::mouseMoveEvent(QMouseEvent *e)
{
qDebug()<< this->chart()->mapToValue(e->pos());
QChartView::mouseMoveEvent(e);
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就可以了
|