Qwt开发笔记(一):Qwt简介、下载以及基础demo工程模板
前言
QWT开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,本系列旨在系统解说并逐步更新其各种Demo示例。
注意
本文章介绍的版本为Qwt6.2.0,该版本为2021年7月左右发布的。
多年前文章
  (本篇不再整理了)
  《Qt开发笔记之Qwt(一):Qwt介绍、编译与Demo》
  《Qt开发笔记之Qwt(二):Qwt仪表盘的基本使用》
Demo演示
  
Qwt简介
简介
Qwt库包含GUI组件和实用程序类,它们主要用于具有技术背景的程序。除了2D绘图框架外,它还提供了刻度、滑块、刻度盘、圆规、温度计、轮子和旋钮,以控制或显示值、数组或双精度范围。
支持Qt版本
Qwt 6.2可能适用于您找到Qt的所有环境。它与Qt 4.8和所有Qt5版本兼容。
演示图
曲线图
  
光谱图,等高线图
  
条形图、柱状图
  
其他绘图
  
表盘、圆规、旋钮、滑块等
  
下载
  Qt平台所有>=Qt 4.8的版本都将在6.x分支中得到主动支持。
  sourceforge下载地址:https://sourceforge.net/projects/qwt/files
  
  csdn粉丝0积分下载地址:https://download.csdn.net/download/qq21497936/87231942
  压缩包包含了:
- qwt-6.2.0.zip
 带有Qwt源码的Zip文件和Windows的html文档
- qwt-6.2.0标准bz2
 压缩的tar文件,带有Qwt源代码和UNIX系统(Linux、Mac…)的html文档
- qwt-6.2.0.pdf
 Qwt文档为PDF文档。
- qwt-6.2.0.qch
 Qwt文档作为Qt压缩帮助文档,可以加载到Qt助手或创建者中。在Qt Creator中,上下文相关的帮助将像Qt类一样可用。
模块化部署到工程
  这里我们跟常规方式不一样,常规方式是先编译然后加入到项目中,我们是直接源码带入到源码中编译,第一次编译时间会较长,但是后续不暴露qwt的动态库,更重要的时候,当我们灵活切换平台的时候,不需在编译库和引入库上额外花费时间,以达到模块化添加的终极目的—包含模块.pri文件即可。
  查看qwt.pro文件:
  
  所以,包含源码src工程即可,然后查看src.下:
  
  所以包含src.pri即可。
  最终qwt6.2.20.pri模块内容如下:
  
  这时候引入不进去:
  
  需要多做两步骤,如下图:
  
  把所文件前面加上$$PWD(修改之前,请copy一份备份),还得包含pro编译时的三个配置文件,如下图:
  
  最终带qwt6.2.0源码模块如下:
  
  然后qmake,编译(主要检测一下是否移植到工程当作模块化源码成功):
  
  使用-j8不到3分钟就编完了,后续开发中因为此模块作为源码模块包含,在非clean模式下,只需要编译一次,但是避免了不同环境移植工程出现的各种环境问题,让团队成员之间交互,已经模块包含组装最简单化,从而提升沟通效率和开发效率。
模块化
  
基础环境Demo
这里我们做一个只是调用图的简单使用,用来确认该模块可以被调用,能正常工作,搭建基础模板demo。
演示效果
  
  
初始化源码
void TestWidget::initQwt()
{
    _pQwtPlot = new QwtPlot(this);
    // 设置背景色
    _pQwtPlot->setCanvasBackground(QBrush(QColor(255, 255, 255)));
    // 设置x1坐标轴
    {
        _pQwtPlot->setAxisTitle(QwtPlot::xBottom, "时间(s)");
    }
    // 设置y1坐标轴
    {
        _pQwtPlot->setAxisTitle(QwtPlot::yLeft, "采集数值");
    }
    // 设置绘图区域网格
    {
        QwtPlotGrid *pGrid = new QwtPlotGrid();
        pGrid->setMajorPen(Qt::gray, 1, Qt::SolidLine);
        pGrid->attach(_pQwtPlot);
    }
    // 设置图例
    {
        QwtLegend *pLegend = new QwtLegend();
        pLegend->setDefaultItemMode(QwtLegendData::Checkable);
        _pQwtPlot->insertLegend(pLegend, QwtPlot::TopLegend);
    }
    // 设置曲线0
    {
        QwtPlotCurve *pCurve = new QwtPlotCurve();
        pCurve->setTitle("电压(mV)");
        pCurve->setPen(Qt::blue, 2);
        pCurve->setRenderHint(QwtPlotItem::RenderAntialiased, true);
        // 曲线0符号对象
        {
            QwtSymbol *pSymbol = new QwtSymbol(QwtSymbol::Ellipse);
            pSymbol->setPen(Qt::red);
            pSymbol->setSize(4);
        }
        // 曲线0数据
        {
            QVector<double> vectorX;
            QVector<double> vectorY;
            vectorX.append(0); vectorY.append(0);
            vectorX.append(1); vectorY.append(2);
            vectorX.append(2); vectorY.append(3);
            vectorX.append(4); vectorY.append(4);
            pCurve->setSamples(vectorX, vectorY);
            // 将曲线添加到绘图
            pCurve->attach(_pQwtPlot);
        }
    }
}
基础模板v1.0.0
   
入坑
入坑一:融合之后,定义槽函数slots关键字错误
问题
  
原因
  
  由于使用了QT_NO_KEYWORDS宏定义,因此emit、signals、slots都不用使用了,如果想使用信号槽机制的话,必须用宏来代替,分别是Q_EMIT、Q_SIGNALS、Q_SLOTS。
   
解决
  直接去掉,不然我们之前的模块将需要大面积更改。
  
  修改后,没发现出现问题,也就这样解决了。
Qwt开发笔记(一):Qwt简介、下载以及基础demo工程模板的更多相关文章
- TERSUS无代码开发(笔记01)-按装下载和基础语法
		1.中国官网 https://tersus.cn/ 2.下载:https://tersus.cn/download/ 3.开发文档:https://tersus.cn/docs/ 4.基本元件说明 图 ... 
- 吴裕雄--天生自然Django框架开发笔记:Django简介
		Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Python写成. ... 
- Apcahe Shiro学习笔记(一):简介及运行官方Demo
		一.Apache Shrio: apache shiro 是一个功能强大和易于使用的Java安全框架,为开发人员提供一个直观而全面的的解决方案的认证,授权,加密,会话管理. 支持认证跨一个或多个数据源 ... 
- Gif开发笔记(一):gif介绍、编译和工程模板
		前言 实现gif图片的解码和生成. Gif 简介 GIF格式的名称是Graphics Interchange Format的缩写,是在1987年由Compu Serve公司为了填补跨平 ... 
- Mongodb 笔记01 MongoDB 简介、MongoDB基础知识、启动和停止MongoDB
		MongoDB 简介 1. 易于使用:没有固定的模式,根据需要添加和删除字段更加容易 2. 易于扩展:MongoDB的设计采用横向扩展.面向文档的数据模型使它能很容易的再多台服务器之间进行分割.自动处 ... 
- PHP移动互联网开发笔记(8)——MySQL数据库基础回顾[2]
		一.数据表 为了确保数据的完整性和一致性,在创建表时指定字段名称,字段类型和字段属性外,还需要使用约束(constraint),索引(index),主键(primary key)和外键(foregin ... 
- PHP移动互联网开发笔记(6)——MySQL数据库基础回想
		近期看了一些架构方面的资料.可是发现基础知识都不怎么坚固,接下来的一段时间.我会定期总结基础知识. 一.数据类型 1.整型 数据类型 存储空间 说明 取值范围 TINYINT 1字节 很小的整 ... 
- PHP移动互联网开发笔记(7)——MySQL数据库基础回顾[1]
		一.数据类型 1.整型 数据类型 存储空间 说明 取值范围 TINYINT 1字节 非常小的整数 带符号值:-128~127无符号值:0~255 SMALLINT 2字节 较小的整数 带符号值:-32 ... 
- TERSUS无代码开发(笔记02)-简单实例加法
		简单实例加法 1.用户端元件(显示元件)(40个) 图标 英文名称 元件名称 使用说明 服务器端 客户端 Pane 显示块 是一个显示块,是HTML的div标签 √ Row 行 行元件中的显示元件 ... 
- Windows 8.1 store app 开发笔记
		原文:Windows 8.1 store app 开发笔记 零.简介 一切都要从博彦之星比赛说起.今年比赛的主题是使用Bing API(主要提到的有Bing Map API.Bing Translat ... 
随机推荐
- .NET WebAPI 自定义 NullableConverter 解决请求入参 “”空字符触发转换异常问题
			最近在项目中启用了Nullable 可为空的类型,这个特性确实很好用,在 WebAPI 的入参上可以直接采用 ? 来标记一个字段是否允许为空,但是使用过程中遇到了如下一个问题,比如创建部门接口 我们定 ... 
- 有偿提供ES 7.X和8.X 版本 的白金版和企业版 使用咨询服务
			若有意向,可通过下方的邮箱发邮件进行咨询,非诚勿扰.. 邮箱地址:sandu12345@msn.cn 
- Elasticsearch:跨集群复制 Cross-cluster replication(CCR)
- PPR的断管
			1. 小管径PPR管的断管 2. 大管径PPR管的断管 
- .NET下数据库的负载均衡(有趣实验)(续)
			.NET下数据库的负载均衡(有趣实验)这篇文章发表后,受到了众多读者的关注与好评,其中不乏元老级程序员. 读者来信中询问最多的一个问题是:它是否能支持"异种数据库"的负载均衡?? ... 
- 如何优雅的备份MySQL数据?看这篇文章就够了
			大家好,我是一灯,今天一块学习一下如何优雅安全的备份MySQL数据? 1. 为什么要备份数据 先说一下为什么需要备份MySQL数据? 一句话总结就是:为了保证数据的安全性. 如果我们把数据只存储在一个 ... 
- Mapper 实体转换Entiy to Dto
			实际使用中发现很多问题 如果用EFcore 框架,这个表达式树生成一个新的实体导致EFcore 跟踪失败!/// <summary> /// 生成表达式目录树 泛型缓存 /// </ ... 
- 2022年最新编辑Linux基础知识总结
			文章目录 1.Linux的目录结构 2.远程操作Linux和上传文件到Linux 3.文本编辑 4.快捷键 5.登录.注销.关机.重启 6.用户管理 6.1 .新用户注册 6.2.使用新用户登录 6. ... 
- .Net Core redis 调用报错 '6000 Redis requests per hour' 解决 6000 此调用限制
			问题描述 redis 是一种基于内存,性能高效的 NoSQL 数据库,性能高主要就体现在数据交互耗时较短,能够段时快速的对用户的请求做出反应,所以在业务比较复杂或交互量需求大时,必然会超过 6000次 ... 
- Windows7下驱动开发与调试体系构建——1.驱动开发的环境准备
			目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html 系统基础环境 开发环境 win7下开发驱动需要安装vs,这里使用2017. 安装vs ... 
