一、前言

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. KubeSphere 社区双周报 | KubeSphere 多项更新 | 2023.06.23-07.06

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  2. 云原生周刊 | 2023 年热门:云 IDE、Web Assembly 和 SBOM | 2023-02-20

    在 CloudNative SecurityCon 上,云原生计算基金会的首席技术官 Chris Aniszczyk 在 The New Stack Makers 播客的这一集中强调了 2023 年正 ...

  3. NebulaGraph 的云产品交付实践

    作者:乔雷,Vesoft.Inc 云原生技术专家 NebulaGraph 介绍 NebulaGraph 是由杭州悦数科技有限公司自主研发的一款开源分布式图数据库产品,擅长处理千亿节点万亿条边的超大数据 ...

  4. Nuxt.js 应用中的 builder:watch 事件钩子详解

    title: Nuxt.js 应用中的 builder:watch 事件钩子详解 date: 2024/10/24 updated: 2024/10/24 author: cmdragon excer ...

  5. 洛谷 P1540 [NOIP2010 提高组] 机器翻译

    题目概括 给定 N 个整数,和一个容量为 M 的"字典",从头到尾依次翻译,每次翻译先看自家字典,没有的话再看别人的字典并存到自家字典,如果自家字典满了,当前单词的翻译会代替最早进 ...

  6. 强化学习性能指标之一:以训练的episodes数和训练所需样本数作为评价算法性能的指标

    在强化学习领域,一般都是限定训练的episodes数和训练所需样本数的,也就是说在进行算法性能对比的时候各个算法都是在相同的训练的episodes数和训练所需样本数的,但是如果我们在算法得分数保持相同 ...

  7. 4-11.3 C++中的显式类转换

    目录 static_cast 1.用来改变基本类型:一般是高精度转低精度 2.恢复void* 指针类型 const_cast 用来去除底层const(low-level const) reinterp ...

  8. mysql 批量重命名数据表、统一给表加前缀

    背景 一个本地数据库,里面有 90 个数据表.由于历史原因,现在需要批量给以前的数据表加上一个前缀.于是安排人吭哧吭呲的人工修改,耗费一天工时.过了几天,又需要把统一前缀去掉.内心早已问候 @¥#%% ...

  9. php yaconf扩展

    在了解到PHP鸟哥还有这个扩展后,我安装尝试了一下 在这里有介绍 https://pecl.php.net/package/yaconf  这里有更详细的代码和说明 https://github.co ...

  10. Linux中find命令详解

    find命令 find 命令用于查找文件或目录 语法格式: find ./ -type f -name '文件名' 参数依次是:find命令,这里的./指的是当前路径,-type是选择文件类型,文件类 ...