一、前言

QWT,全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图。为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供,输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。该工具库基于Qt开发,所以也继承了Qt的跨平台特性。

在Qt做项目中,如果需要用到曲线的话,很可能会用到qwt组件,但是很多初学者苦于编译的种种烦恼,比如默认qwt是插件的形式提供的,需要编译成你对应编译器的插件动态库,然后引入头文件链接动态库再用,甚至有些初学者想直接集成到qtcreator中,发现怎么都搞不定,烦啊,搞得一点兴趣都没有了,其实默认Qt的安装包自带的mingw编译器,很多人默认选择的也是mingw编译器的Qt,而安装包中的Qtcreator呢又是msvc编译器编译的,因为版本不对所以无法集成,那怎么办呢,用户其实很多时候只需要new一个类出来放对应的布局或者窗体上即可,然后调用对应的方法来设置和处理,根本不想这么复杂,于是抽点时间将qwt中的所有控件的完整源码抽取出来,直接源码集成到你的项目,在你的项目只需要引入pri文件即可,永远不要再去搞烦人的编译插件了。

二、代码思路

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport concurrent DEFINES += QWT_NO_SVG QWT_NO_OPENGL
INCLUDEPATH += $$PWD HEADERS += \
$$PWD/qwt.h \
$$PWD/qwt_abstract_legend.h \
$$PWD/qwt_abstract_scale.h \
$$PWD/qwt_abstract_scale_draw.h \
$$PWD/qwt_abstract_slider.h \
$$PWD/qwt_analog_clock.h \
$$PWD/qwt_arrow_button.h \
$$PWD/qwt_clipper.h \
$$PWD/qwt_color_map.h \
$$PWD/qwt_column_symbol.h \
$$PWD/qwt_compass.h \
$$PWD/qwt_compass_rose.h \
$$PWD/qwt_compat.h \
$$PWD/qwt_counter.h \
$$PWD/qwt_curve_fitter.h \
$$PWD/qwt_date.h \
$$PWD/qwt_date_scale_draw.h \
$$PWD/qwt_date_scale_engine.h \
$$PWD/qwt_dial.h \
$$PWD/qwt_dial_needle.h \
$$PWD/qwt_dyngrid_layout.h \
$$PWD/qwt_event_pattern.h \
$$PWD/qwt_global.h \
$$PWD/qwt_graphic.h \
$$PWD/qwt_interval.h \
$$PWD/qwt_interval_symbol.h \
$$PWD/qwt_knob.h \
$$PWD/qwt_legend.h \
$$PWD/qwt_legend_data.h \
$$PWD/qwt_legend_label.h \
$$PWD/qwt_magnifier.h \
$$PWD/qwt_math.h \
$$PWD/qwt_matrix_raster_data.h \
$$PWD/qwt_null_paintdevice.h \
$$PWD/qwt_painter.h \
$$PWD/qwt_painter_command.h \
$$PWD/qwt_panner.h \
$$PWD/qwt_picker.h \
$$PWD/qwt_picker_machine.h \
$$PWD/qwt_pixel_matrix.h \
$$PWD/qwt_plot.h \
$$PWD/qwt_plot_abstract_barchart.h \
$$PWD/qwt_plot_barchart.h \
$$PWD/qwt_plot_canvas.h \
$$PWD/qwt_plot_curve.h \
$$PWD/qwt_plot_dict.h \
$$PWD/qwt_plot_directpainter.h \
$$PWD/qwt_plot_grid.h \
$$PWD/qwt_plot_histogram.h \
$$PWD/qwt_plot_intervalcurve.h \
$$PWD/qwt_plot_item.h \
$$PWD/qwt_plot_layout.h \
$$PWD/qwt_plot_legenditem.h \
$$PWD/qwt_plot_magnifier.h \
$$PWD/qwt_plot_marker.h \
$$PWD/qwt_plot_multi_barchart.h \
$$PWD/qwt_plot_panner.h \
$$PWD/qwt_plot_picker.h \
$$PWD/qwt_plot_rasteritem.h \
$$PWD/qwt_plot_renderer.h \
$$PWD/qwt_plot_rescaler.h \
$$PWD/qwt_plot_scaleitem.h \
$$PWD/qwt_plot_seriesitem.h \
$$PWD/qwt_plot_shapeitem.h \
$$PWD/qwt_plot_spectrocurve.h \
$$PWD/qwt_plot_spectrogram.h \
$$PWD/qwt_plot_textlabel.h \
$$PWD/qwt_plot_tradingcurve.h \
$$PWD/qwt_plot_zoneitem.h \
$$PWD/qwt_plot_zoomer.h \
$$PWD/qwt_point_3d.h \
$$PWD/qwt_point_data.h \
$$PWD/qwt_point_mapper.h \
$$PWD/qwt_point_polar.h \
$$PWD/qwt_raster_data.h \
$$PWD/qwt_round_scale_draw.h \
$$PWD/qwt_samples.h \
$$PWD/qwt_sampling_thread.h \
$$PWD/qwt_scale_div.h \
$$PWD/qwt_scale_draw.h \
$$PWD/qwt_scale_engine.h \
$$PWD/qwt_scale_map.h \
$$PWD/qwt_scale_widget.h \
$$PWD/qwt_series_data.h \
$$PWD/qwt_series_store.h \
$$PWD/qwt_slider.h \
$$PWD/qwt_spline.h \
$$PWD/qwt_symbol.h \
$$PWD/qwt_system_clock.h \
$$PWD/qwt_text.h \
$$PWD/qwt_text_engine.h \
$$PWD/qwt_text_label.h \
$$PWD/qwt_thermo.h \
$$PWD/qwt_transform.h \
$$PWD/qwt_wheel.h \
$$PWD/qwt_widget_overlay.h SOURCES += \
$$PWD/qwt_abstract_legend.cpp \
$$PWD/qwt_abstract_scale.cpp \
$$PWD/qwt_abstract_scale_draw.cpp \
$$PWD/qwt_abstract_slider.cpp \
$$PWD/qwt_analog_clock.cpp \
$$PWD/qwt_arrow_button.cpp \
$$PWD/qwt_clipper.cpp \
$$PWD/qwt_color_map.cpp \
$$PWD/qwt_column_symbol.cpp \
$$PWD/qwt_compass.cpp \
$$PWD/qwt_compass_rose.cpp \
$$PWD/qwt_counter.cpp \
$$PWD/qwt_curve_fitter.cpp \
$$PWD/qwt_date.cpp \
$$PWD/qwt_date_scale_draw.cpp \
$$PWD/qwt_date_scale_engine.cpp \
$$PWD/qwt_dial.cpp \
$$PWD/qwt_dial_needle.cpp \
$$PWD/qwt_dyngrid_layout.cpp \
$$PWD/qwt_event_pattern.cpp \
$$PWD/qwt_graphic.cpp \
$$PWD/qwt_interval.cpp \
$$PWD/qwt_interval_symbol.cpp \
$$PWD/qwt_knob.cpp \
$$PWD/qwt_legend.cpp \
$$PWD/qwt_legend_data.cpp \
$$PWD/qwt_legend_label.cpp \
$$PWD/qwt_magnifier.cpp \
$$PWD/qwt_math.cpp \
$$PWD/qwt_matrix_raster_data.cpp \
$$PWD/qwt_null_paintdevice.cpp \
$$PWD/qwt_painter.cpp \
$$PWD/qwt_painter_command.cpp \
$$PWD/qwt_panner.cpp \
$$PWD/qwt_picker.cpp \
$$PWD/qwt_picker_machine.cpp \
$$PWD/qwt_pixel_matrix.cpp \
$$PWD/qwt_plot.cpp \
$$PWD/qwt_plot_abstract_barchart.cpp \
$$PWD/qwt_plot_axis.cpp \
$$PWD/qwt_plot_barchart.cpp \
$$PWD/qwt_plot_canvas.cpp \
$$PWD/qwt_plot_curve.cpp \
$$PWD/qwt_plot_dict.cpp \
$$PWD/qwt_plot_directpainter.cpp \
$$PWD/qwt_plot_grid.cpp \
$$PWD/qwt_plot_histogram.cpp \
$$PWD/qwt_plot_intervalcurve.cpp \
$$PWD/qwt_plot_item.cpp \
$$PWD/qwt_plot_layout.cpp \
$$PWD/qwt_plot_legenditem.cpp \
$$PWD/qwt_plot_magnifier.cpp \
$$PWD/qwt_plot_marker.cpp \
$$PWD/qwt_plot_multi_barchart.cpp \
$$PWD/qwt_plot_panner.cpp \
$$PWD/qwt_plot_picker.cpp \
$$PWD/qwt_plot_rasteritem.cpp \
$$PWD/qwt_plot_renderer.cpp \
$$PWD/qwt_plot_rescaler.cpp \
$$PWD/qwt_plot_scaleitem.cpp \
$$PWD/qwt_plot_seriesitem.cpp \
$$PWD/qwt_plot_shapeitem.cpp \
$$PWD/qwt_plot_spectrocurve.cpp \
$$PWD/qwt_plot_spectrogram.cpp \
$$PWD/qwt_plot_textlabel.cpp \
$$PWD/qwt_plot_tradingcurve.cpp \
$$PWD/qwt_plot_xml.cpp \
$$PWD/qwt_plot_zoneitem.cpp \
$$PWD/qwt_plot_zoomer.cpp \
$$PWD/qwt_point_3d.cpp \
$$PWD/qwt_point_data.cpp \
$$PWD/qwt_point_mapper.cpp \
$$PWD/qwt_point_polar.cpp \
$$PWD/qwt_raster_data.cpp \
$$PWD/qwt_round_scale_draw.cpp \
$$PWD/qwt_sampling_thread.cpp \
$$PWD/qwt_scale_div.cpp \
$$PWD/qwt_scale_draw.cpp \
$$PWD/qwt_scale_engine.cpp \
$$PWD/qwt_scale_map.cpp \
$$PWD/qwt_scale_widget.cpp \
$$PWD/qwt_series_data.cpp \
$$PWD/qwt_slider.cpp \
$$PWD/qwt_spline.cpp \
$$PWD/qwt_symbol.cpp \
$$PWD/qwt_system_clock.cpp \
$$PWD/qwt_text.cpp \
$$PWD/qwt_text_engine.cpp \
$$PWD/qwt_text_label.cpp \
$$PWD/qwt_thermo.cpp \
$$PWD/qwt_transform.cpp \
$$PWD/qwt_wheel.cpp \
$$PWD/qwt_widget_overlay.cpp

三、效果图

四、开源主页

  • 以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。
  • 本开源项目已经成功升级到V2.0版本,分门别类,图文并茂,保你爽到爆。
  • Qt开源武林秘籍开发经验,看完学完,20K起薪,没有找我!
  1. 国内站点:https://gitee.com/feiyangqingyun/QWidgetDemo
  2. 国际站点:https://github.com/feiyangqingyun/QWidgetDemo
  3. 开源秘籍:https://gitee.com/feiyangqingyun/qtkaifajingyan
  4. 个人主页:https://qtchina.blog.csdn.net/
  5. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/

Qt开源作品34-qwt无需插件源码的更多相关文章

  1. 如何查看google chrome 插件源码

    常用浏览器google chrome 有很多优秀的插件,寂寞的时候想看看人家是怎么实现的,说是快那就动手吧 插件代码位置 本人mac笔记本,chrome 插件位置如下 $ cd  /Users/vin ...

  2. java开源即时通讯软件服务端openfire源码构建

    java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...

  3. Ocelot简易教程(七)之配置文件数据库存储插件源码解析

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9852711.html 上篇文章给大家分享了如何集成我写的一个Ocelot扩展插件把Ocelot的配置存储 ...

  4. 基于tomcat插件的maven多模块工程热部署(附插件源码)

    内容属原创,转载请注明出处 写在前面的话 最近一直比较纠结,归根结底在于工程的模块化拆分.以前也干过这事,但是一直对以前的结果不满意,这会重操旧业,希望搞出个自己满意的结果. 之前有什么不满意的呢? ...

  5. vue打包时,assets目录 和static目录下文件的处理区别(nodeModule中插件源码修改后,打包后的文件应放在static目录)

    为了回答这个问题,我们首先需要了解Webpack如何处理静态资产.在 *.vue 组件中,所有模板和CSS都会被 vue-html-loader 及 css-loader 解析,并查找资源URL.例如 ...

  6. 如何优雅的阅读 GitHub 上开源 js 框架和库的源码

    如何优雅的阅读 GitHub 上开源 js 框架和库的源码 step 先总后分,即先了解一下啊框架的大体架构,又一个全局的认识,在选择某些和感兴趣的部分,仔细阅读,各个击破: 带着问题阅读,用到了什么 ...

  7. Maven 依赖调解源码解析(二):如何调试 Maven 源码和插件源码

    本文是系列文章<Maven 源码解析:依赖调解是如何实现的?>第二篇,主要介绍如何调试 Maven 源码和插件源码.系列文章总目录参见:https://www.cnblogs.com/xi ...

  8. 开源网站流量统计系统Piwik源码分析——参数统计(一)

    Piwik现已改名为Matomo,这是一套国外著名的开源网站统计系统,类似于百度统计.Google Analytics等系统.最大的区别就是可以看到其中的源码,这正合我意.因为我一直对统计的系统很好奇 ...

  9. 了解腾讯开源的多渠道打包技术 VasDolly源码解析

    一.概要 大家应该都清楚,大家上线app,需要上线各种平台,比如:小米,华为,百度等等等等,我们多数称之为渠道,如果发的渠道多,可能有上百个渠道. 针对每个渠道,我们希望可以获取各个渠道的一些独立的统 ...

  10. Android 热修复Nuwa的原理及Gradle插件源码解析

    现在,热修复的具体实现方案开源的也有很多,原理也大同小异,本篇文章以Nuwa为例,深入剖析.  Nuwa的github地址 https://github.com/jasonross/Nuwa 以及用于 ...

随机推荐

  1. EBS GL 当前职责有访问权限的所有账套

    CREATE OR REPLACE VIEW CUX_GL_ACCESS_LEDGER_V AS SELECT L.LEDGER_ID,L.NAME,L.LEDGER_CATEGORY_CODE FR ...

  2. Kubernetes 集成 KubeEdge 需要注意的问题汇总

    作者:朱含 近期小伙伴对在使用 KubeSphere v3.1 上集成边缘节点有不少疑问,这里说明下 guide 文档地址,然后可以把这方面的问题汇总在这里,方便后续的小伙伴排查问题,也欢迎大家继续补 ...

  3. 生成文本聚类java实现1

    本章主要的学习是中文分词 和两种统计词频(传统词频和TF-IDF算法 ) 的方法. 学习目的:通过N多的新闻标题 or 新闻摘要 or 新闻标签,生成基本的文本聚类,以便统计当天新闻的热点内容. 扩展 ...

  4. 学习JavaScript第二天

    文章目录 1.运算符(操作符) 1.1运算符的分类 1.2算数运算符 1.3递增和递减运算符 1.4比较运算符 1.5逻辑运算符 2.选择结构 2.1if语句 2.1.1语法 2.1.2案例1:判断闰 ...

  5. CTF-CRYPTO-RSA

    CTF-CRYPTO-RSA 只是个人理解,可能有不正确的地方,具体RSA算法参考:http://8.146.200.37:4100/crypto/asymmetric/rsa 1.RSA算法概述 R ...

  6. 题解:USACO23OPEN-Silver

    题解:USACO23OPEN-Silver T1 Milk Sum 给定一个长度为 \(N\) 的序列 \(a_1,a_2,...,a_n\),现在给出 \(Q\) 次操作每次将 \(a_x\) 修改 ...

  7. win10本地客户端配置SSL并使用MQTTX

    1.     本地下载Openssl(默认安装即可,最后一个将打赏取消勾选) Win32/Win64 OpenSSL Installer for Windows - Shining Light Pro ...

  8. 多校A层冲刺NOIP2024模拟赛20

    多校A层冲刺NOIP2024模拟赛20 昨天晚上打 ABC 了,所以今天才发. T1 星际联邦 直接上 菠萝(Borůvka)算法就行了,当然还可以用线段树优化 prim算法,但是没打过只是口胡:就是 ...

  9. 性能调优、虚拟机、垃圾回收、软硬件协调相关文章和视频 — Part1

    本文由 ImportNew - 顾星竹 翻译自 javacodegeeks.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 J ...

  10. x-easypdf 初始

    一.概述 一个 java 语言简化处理 pdf 的框架 项目主页 https://x-easypdf.cn 项目概述 x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfb ...