本代码实现的功能:
- 实时动态双曲线
- 可以鼠标拖拽
- 可以保留已经产生的数据
- 随着鼠标的移动实时显示X、Y轴坐标
![4d395cb8d52b4e371b8c7f572ef282ba.png](https://img-blog.csdnimg.cn/img_convert/4d395cb8d52b4e371b8c7f572ef282ba.png)
在.pro中
QT += charts
在ChartView.h中
#ifndef __CHARTVIEW_H__
#define __CHARTVIEW_H__
#include
#include
QT_CHARTS_USE_NAMESPACE
class ChartView : public QChartView
{
public:
ChartView(QChart *chart, QWidget *parent = 0);
protected:
void keyPressEvent(QKeyEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
private:
bool isClicking;
int xOld;
int yOld;
QGraphicsSimpleTextItem* m_coordItem;
};
#endif /* __CHARTVIEW_H__ */
在ChartView.cpp中
#include "chartview.h"
ChartView::ChartView(QChart *chart, QWidget *parent) :
QChartView(chart, parent),
isClicking(false),
xOld(0), yOld(0)
{
setRubberBand(QChartView::RectangleRubberBand);
}
void ChartView::mousePressEvent(QMouseEvent *event)
{
if (event->button() & Qt::LeftButton) {
isClicking = true;
} else if (event->button() & Qt::RightButton) {
chart()->zoomReset();
}
QChartView::mousePressEvent(event);
}
void ChartView::mouseMoveEvent(QMouseEvent *event)
{
int x, y;