QCustomPlot绘图实现光标滑过曲线显示点的坐标

本文介绍了两种在QCustomPlot上实现鼠标悬停时显示点坐标值的方法:一是通过信号槽机制,二是通过继承QCustomPlot并重写mouseMoveEvent函数。在每个方法中,都详细阐述了获取鼠标位置、坐标转换、判断点是否在曲线附近以及显示工具提示的过程。这两种方法都能实现在鼠标移动时实时显示光标所在点的坐标信息。

有两种方法可实现这个效果:

1.通过关联QCustomPlot的mouseMove信号槽事件实现;

2.通过继承QCustomPlot类,重写mouseMove虚函数实现;

这个两个方法都是获取鼠标位置,然后计算出点的坐标值,利用QToolTip显示点坐标的方法。

方向弄清楚了,现在我们去实现出来,go……

一、信号槽方法

1、首先建立一个鼠标移动时间响应函数:

private slots:
	void MyMouseMoveEvent(QMouseEvent *event);

2、将槽函数MyMouseMoveEvent与QCustomPlot的mouseMove信号建立连接。
Plus,这里推荐基于qt5的信号槽连接,因为编译时,基于qt4的connect不会检查信号和槽的参数以及槽函数正确与否,而基于qt5的connect会有这一个检查过程(原来遇见过基于qt4的槽函数没有响应的情况)。

connect(m_pHistoryPlot, &QCustomPlot::mouseMove, this, &HistoryDataView::MyMouseMoveEvent);

3、槽函数实现光标划过曲线显示点坐标功能。
代码有详细注释,这里就不详细讲解。

void HistoryDataView::MyMouseMoveEvent(QMouseEvent* event)
{	
    if (m_pHistoryPlot->graphCount() == 0)
	{
		return;
	}

	//获取鼠标坐标,相对父窗体坐标
	int x_pos = event->pos().x();
	int y_pos = event->pos().y();

	//鼠标坐标转化为CustomPlot内部坐标
	float 
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值