QWT--添加Label

news/2024/12/13 2:39:38/

文章目录

  • 一、前言
  • 二、添加画布标签
  • 三、游标读数

一、前言

在使用QWT绘制曲线的时候,可能需要在画布上标明曲线的信息,例如我最近在做的静态录波,需要标明曲线的物理量,如下所示:

在这里插入图片描述

在QWT–数据游标一文中,其实我已经通过自定义图元的方式实现过了。

因为当时没有仔细看QWT源码,就只想到这个方式来实现自己的需求;但是自定义图元有个弊端(应该是我还没玩明白QWT),自定义的图元绘制是在物理坐标上,而不是画布坐标上,也就是说它始终印在我们的窗口的固定位置上,不会随着坐标轴范围的变化而变化。

我的静态录波曲线是可以随意伸缩的,所以曲线物理信息标记需要随着坐标轴范围变化而变化,所以自定义图元的方式就不咋匹配我的需求了;


二、添加画布标签

最近看源码,发现QwtPlotMarker这个类,有一个接口:

void setLabel( const QwtText& );
QwtText label() const;

原来直接使用官方提供的QwtPlotMarker就可以实现我的需求,使用示例:

QwtPlotMarker* qwtPlotMarker = new QwtPlotMarker;
QwtText qwtText("Hello World");
qwtText.setColor(QColor(255,0,0));
qwtText.setFont(QFont("Microsoft YaHei", 10, QFont::Bold));
qwtPlotMarker->setLabel(qwtText);
double pos_x = 1;
double pos_y = 1;
qwtPlotMarker->attach(qwtPlot);
qwtPlotMarker->setXValue(pos_x);
qwtPlotMarker->setYValue(pos_y);

测试发现调用lable()来修改标签文本,无效,需要重新setLabel()才行,例如:

//保持Label字体和颜色和之前一致,只改变文本内容,不改变位置
QwtText qwtText("QwtLabel");
qwtText.setColor(qwtPlotMarker->label().color());
qwtText.setFont(qwtPlotMarker->label().font());
qwtPlotMarker->setLabel(qwtText);

三、游标读数

记录一下自己实现游标读数的一个方式。

在这里插入图片描述

首先游标读数也是也是通过上面的QwtPlotMarker实现的;

左侧其实也是1个QwtPlot画布,设置它的X轴范围固定(0~1),Y轴范围随着右侧画布的Y轴变动,高度和右侧画布一致,这样它们的网格线就完美对齐了。


http://www.ppmy.cn/news/22716.html

相关文章

【交互式用户流程与演示设计】上海道宁与​Overflow让您能更自信的展示您的设计

Overflow 让设计师和产品经理 能够自信地展示他们的设计 并讲述他们的设计故事 独特的动态和交互式演示 Overflow 的功能 使设计人员能够使用鼠标、键盘和手势 轻松导航用户流程 以闪电般的速度 放大和缩小以在重要时专注于细节 原型模式提供了 新的不同缩放级别和交互…

电力电子技术课程实验:实验一、DC/DC直流斩波电路制作与性能测试

电力电子技术课程实验:实验一、DC/DC直流斩波电路制作与性能测试实验一、DC/DC直流斩波电路制作与性能测试预习报告一、 知识准备二、降压斩波电路MATLAB/Simulink电路三、降压斩波电路MATLAB仿真四、 升压斩波电路MATLAB/Simulink电路五、升压斩波电路MATLAB仿真六…

【RuoYi-Vue-Plus】学习笔记 47 - 翻译功能 Translation 源码分析

文章目录前言参考目录功能代码实现及测试目录结构说明测试类功能调用流程分析1、翻译配置初始化 TranslationConfig#init2、翻译功能的实现2.1、创建自定义上下文序列化器 TranslationHandler#createContextual2.2、设置空值序列化器 TranslationBeanSerializerModifier#change…

C#里使用UdpClient和线程来创建UDP网络通讯

C#里使用UdpClient和线程来创建UDP网络通讯 在开发的过程中,时不时就需要使用到UDP通讯。 比如与仪器进行通讯,获取仪器的数据。 又或者与PLC通讯,而PLC采用UDP的协议,而不是使用TCP协议。 作为一个软件开发人员,所以必须要熟练地使用UDP进行通讯, 才可以随着应用范围的改…

互融云汽车融资租赁系统-汽车金融软件开发

汽车融资租赁作为汽车金融中典型的业务模式,是一种依托现金分期付款的方式,在此基础之上引入出租服务中所有权和使用权分离的特性,租赁结束后将所有权转移给承租人的现代营销方式。即在租赁期内,用户以分期支付租金的方式获得车辆…

开源工具系列3:Prowler

在处理云安全的问题时,一种非常重要的思路就是检测和持续监控云上资源的安全情况,通过专业工具的支持,可以让云安全管理在问题发生前发现云环境中的潜在威胁,进而去采取有效的处理措施。 Prowler 是什么 Prowler 是一个命令行工具…

Docker进阶 - 2. Dockerfile 常用保留字简介

目录 1. FROM 2. MAINTAINER 3. RUN 4. EXPOSE 5. WORKDIR 6. USER 7. ENV 8. VOLUME 9. COPY 10. ADD 11. CMD 12. ENTRYPOINT 13. CMD 和 RUN 命令的区别 本篇文章的讲解截屏示例基于tomcat的Dockerfile:tomcat/9.0/jdk8/openjdk/Dockerfile 1. FR…

PB-02-kit开发板的固件下载和nRF Connect APP的蓝牙透传

PB-02-kit开发板的固件下载和nRF Connect APP的蓝牙透传PB-02-kit开发板固件的下载nRF Connect APP蓝牙透传APP发送消息APP接收消息更改MTU值PB-02-kit开发板 PB-02 是安信可基于天猫精灵TG7100B芯片设计的一款蓝牙模组,PB-02-Kit 开发板是针对 PB-02 模组而设计的一…