qcustomplot 游标吸附_qcustomplot游标测量功能--Apple的学习笔记
1.功能说明
上一个blog中(https://www.jianshu.com/p/5f48eaff0088)我已经实现了图像缩放,平移,自动大小及鼠标跟随来显示坐标。今天要实现2条测试线,吸附图像坐标,并且在右下角可以显示坐标差值的功能。
2.效果图
效果图.png
3.gif动图
游标测量.gif
4.关键代码
void MainWindow::mymouseMove(QMouseEvent *event)
{
if(mydrag)
{
double x = ui->widget->xAxis->pixelToCoord(event->pos().x());
double traceX=0;
double traceY=0;
mytrace->setGraph(ui->widget->graph(0));//设置游标吸附在traceGraph这条曲线上
mytrace->setGraphKey(x);//设置游标的X值(这就是游标随动的关键代码)
traceX = mytrace->position->key();
traceY = mytrace->position->value();
if(leftlineSelected)
{
// 将直线吸附到坐标点上
left_line->point1->setCoords(traceX, 0);
left_line->point2->setCoords(traceX, 1);
left_line_posX = traceX;
left_line_posY = traceY;
distX = right_line_posX - left_line_posX;
distY = right_line_posY - left_line_posY;
label->setBrush(QBrush(QColor(199,99,188,80)));
label->setText(tr("X:%1\nY:%2\ndelX:%3s\ndelY:%4M").arg(QString::number(traceX, 'f', 2)).arg(QString::number(traceY, 'f', 2))
.arg(QString::number(distX, 'f', 2)).arg(QString::number(distY, 'f', 2)));
// 重绘
ui->widget->replot();
}
else if(rightlineSelected)
{
// 将直线吸附到坐标点上
right_line->point1->setCoords(traceX, 0);
right_line->point2->setCoords(traceX, 1);
right_line_posX = traceX;
right_line_posY = traceY;
distX = right_line_posX - left_line_posX;
distY = right_line_posY - left_line_posY;
label->setBrush(QBrush(QColor(199,99,23,80)));
// 仅显示2位
label->setText(tr("X:%1\nY:%2\ndelX:%3s\ndelY:%4M").arg(QString::number(traceX, 'f', 2)).arg(QString::number(traceY, 'f', 2))
.arg(QString::number(distX, 'f', 2)).arg(QString::number(distY, 'f', 2)));
// 重绘
ui->widget->replot();
}
else
{
}
}
}
5.总结遇到的问题
如何判断正在拖动。后来网上查了思路通过press和relese来设置标志位,在move中判断标注位即可判断出当前属于鼠标拖动状态。
如何判断选择到了测量线。后来通过看官网的api及直接看源码,使用selectTest来判断当前鼠标按下的点,到测试对象的距离小于5则判断选中了此测量线。另外selectEvent和deselectEvent是虚方法,所以无法使用。
6.残留问题
第一次显示的delta不正确,原因是有一根线没有移动过。解决方法我也有了。初始化的时候2根线应该放到图像坐标的极限位置。另外一种解决方法是判断若为第一次拖动(及坐标变量未赋值时)则不显示delta差即可。
之后我还会做个完整版及多条图像同时处理的版本,到时候一起解决。先记录下。
qcustomplot 游标吸附_qcustomplot游标测量功能--Apple的学习笔记相关推荐
- linux的can通信busoff,socketCAN内核源码分析是否支持busoff自恢复--Apple的学习笔记
大总结:诊断小系统搭建步骤总结--Apple的学习笔记的剩余问题2中,我说过要深入下socketCAN内核源码学习.因为这个小项目关于驱动开发太顺利了,导致学习不到什么东东.最主要我一开始走了捷径,看 ...
- linux 应用层gpio中断_linux下GPIO中断驱动US100传感器--Apple的学习笔记
一,前言 资源就的利用起来.linux下串口raw驱动(US100超声波)--Apple的学习笔记已经用US100玩了串口,US100还可以用GPIO和中断来玩.原理就是triq发送大于10us的高电 ...
- 从零写一个具有IOC-AOP-MVC功能的框架---学习笔记---11. MVC功能之http请求处理器的编写---简易框架最后一公里!
从零写一个具有IOC-AOP-MVC功能的框架-学习笔记 专栏往期文章链接: IOC功能相关章节: 从零写一个具有IOC-AOP-MVC功能的框架-学习笔记-01.项目初始化 从零写一个具有IOC-A ...
- 抽象类实例化 使用原功能 c++_java 学习笔记 day08 final/static关键字、抽象类和接口...
1.final关键字 final修饰类:此类不能被继承 final修饰变量:则变量不能被修改,是常量 final修饰方法:父类的方法被final修饰时,不能被重写 2.static关键字 2.1被st ...
- 【使用Redis分布式锁实现优惠券秒杀功能】-Redis学习笔记05
前言 本章节主要实现限时.限量优惠券秒杀功能,并利用分布式锁解决<超卖问题>.<一人一单问题>. 一.优惠券下单基本功能实现 1.功能介绍及流程图 2.代码实现 @Resour ...
- 传感器技术—电容式传感器的测量转换电路(学习笔记七 补充)
5.2 电容式传感器的测量转换电路 5.2.1 电桥电路 5.2.2 调频电路 5.2.3 运算放大器电路 5.2.4 二级管双T型电桥电路 5.3电容式传感器的运用 5.3.1 电容测厚仪 5.3. ...
- 开发linux显卡驱动,显卡驱动开发DRM入门--Apple的学习笔记
由于之前的blog提及kmscube的源码我没有找到,所以只能在网上搜索了. DRM简介 DRM是Linux目前主流的图形显示框架,同时DRM可以统一管理GPU和Display驱动,使得软件架构更为统 ...
- python图片表格提取算法_python识别并提取表格中的文字--Apple的学习笔记
此文为的后记.读者可以参考https://www.jianshu.com/p/b85667a4ef76 用到的python文字提取库pytesseract.用pip install pytessera ...
- python实现投票功能_[python 学习笔记] 简单刷投票功能
最近好久没写了,其实有道云里积累了好多,但是没时间整理. 实在是太多事情要做了 好多投票都是不需要登录的,这种刷起来很简单. 原理就是 X-Forwarded-For .废话不多说上代码 import ...
最新文章
- 网站错误记录:A transport-level error has occurred when sending the request to the server.
- 【python3的学习之路七】函数
- 数据库 CURD测试题【中等】
- 值得拥有!精心推荐几款超实用的 CSS 开发工具
- oracle资产负债表重分类吗,【好会计】讲讲资产负债表中的重分类!
- Hackerlands:城市Hackerspaces的农村版本
- PHP快速入门教程:hello world
- thinkphp学习笔记8—命名空间
- NSUserDefault
- 火山安卓文件读写操作演示
- 局域网服务器共享文件夹设置,局域网服务器共享文件访问权限管理方法
- C3P0连接池的使用
- php加图片源码_php给现有的图片加文字水印代码
- Excel 数据透视表教程大全之 03 刷新数据、添加多个字段作为值字段、值显示为总数的百分
- NGINX源码之:ngx_hash
- 微pe工具箱+软碟通 制作 U盘启动盘
- Dell inspiron 7580硬件升级_更换电池加内存条移动硬盘
- 什么是“ Windows任务的主机进程”,为什么我的PC上运行着这么多主机?
- python中pass语句的作用是什么_简述 Python 中 pass 语句的作用。
- PCA(主成分分析)获取BoundingBox代码分析
热门文章
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
- Maya阿诺德室外环境灯光照明和渲染技术学习视频教程
- 如何向非技术人员解释“稀疏傅里叶变换”算法?
- Pliops XDP(Extreme Data Processor)数据库存储设计的新型加速硬件
- Go: 分布式学习利器(3) -- Go的数据类型和运算符
- linux平台下QtCreator中集成Valgrind系列工具
- react 从使用 看定义
- java运算符-逻辑、三元运算符
- Java中 实体类 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
- 【2018-01-22】HTML-表单及表单元素