在qt下使用qwt进行的统计图的绘制(配置 简单使用这些)

《Qt开发》基于QWT的曲线图绘制 Qwt绘制曲线图 该示例包含以下功能: 1.使用qwt绘制曲线图 2.通过鼠标实现绘图的缩放,只缩放x轴或只缩放y轴或同时缩放 3.设置绘图区域和绘图区域外的背景颜色 4.通过点击图例实现曲线的显示和隐藏 QwtPlot绘图部件 头文件 #include <qwt_plot.h> 枚举类型 enum Axis {yLeft, yRight, xBottom, xTop,axisCnt} 阅读详情

正好遇到需要在qt里进行一个程序统计图的绘制,查了下qt的文档本来以为应该有存在一个类似的统计类.. 结果失望了。于是想到的有几个办法,第一是重写一些绘图像paint一样的函数.. 但是就需要画太多的东西了。。 于是就只能找一下有木有第三方的东西了。对了,qt其实有这种的,但是呢,那是企业版就是要付费的。然后找了找,也就qwt支持的还比较好,有比较多的功能和讲解,虽然说是用不到这么多的啦。

配置的话,直接官网下源码,然后利用pro编译就可以了,源码中已经包含了许多的example源码,编译出来之后,在编译的目录下的example 之类的下面有bin文件夹,里面就有例子的执行文件了。这些例子和源码能够让你学到很多使用的方法了,直接看例子算是比较简单的方法了,那个是你要实现的东西,那么你就参考那个的源码就是了。

然后qt使用的话,在qwt编译好之后会在编译完成后的目录下的lib文件夹下面(也许会有变化),有qwt.lib,qwtd.lib,qwtmathml.lib,qwtmathmld.lib这几个文件,就是你需要在程序pro里面进行添加的了(带不带d是区别debug,release的应该知道了。)在项目目录下直接建个lib文件夹简单快捷:

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lqwt -lqwtmathml
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lqwtd -lqwtmathmld
else:unix: LIBS += -L$$PWD/lib/ -lqwt -lqwtmathml

INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/

win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/lib/libqwt.a $$PWD/lib/libqwtmathml.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/lib/libqwtd.a $$PWD/lib/libqwtmathmld.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/lib/qwt.lib $$PWD/lib/qwtmathml.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/lib/qwtd.lib $$PWD/lib/qwtmathmld.lib
else:unix: PRE_TARGETDEPS += $$PWD/lib/libqwt.a $$PWD/lib/libqwtmathml.a

然后还需要吧qwt的文件包进来,qwt源码目录下已经有这个include的文件了,在src下面,吧pri include进你的程序pro,然后根据里面的注释去删减或者修改一些根据需要变动的东西就好了:include(src/qwt/src.pri) 比如cpp文件不需要的就在这里注释掉或者删掉就好了。

其实自己弄弄就知道了,然后就是使用的了,对于这个东西,我们根据需要,比如我用到的就不多,所以只贴用到的东西了。

用到的这个资料其实很少,但其实就是需要多看看文档,也不是特别的复杂,特别多,稍微看多几个你可能用到的就好的了:http://qwt.sourceforge.net/annotated.html

QwtPlot:

这个是一个基本的类的,就是一个2d的容器,所有的继承自QwtPlotItem的部件都能在他的canvas上面显示,包括:数据的弧线 (QwtPlotCurve), 标记 (QwtPlotMarker), 布局 (QwtPlotGrid)等等,example里面有个最简单的例子simpleplot当成一个参考。

QwtPlotCanvas:

这个就是基于QWTplot上面的画布了,就是坐标啊 线啊这些东西东都会在这上面来显示。

QwtLegend:

这是一个图例的类,就是决定显示的图例的样式的。具体参考文档咯~

QwtPlotGrid:

这个类是图标的一个表格布局,比如网格线的样式等等。

QwtPlotCurve:

这个就是最基本的那个表格的统计的数据曲线了。

QwtSymbol:

这个是数据曲线上的数据点的样式

QwtPlotPicker:

这个类比较多的功能,就是在画布上执行的选择的处理,我这里用到的是鼠标在画布上的时候需要显示对应的数值,也需要继承这个类来实现。

 

然后就是简单的代码了,首先是吧继承的要实现鼠标移动时显示当前点数据的功能:

class MyPicker: public QwtPlotPicker
{
public:
    MyPicker( QWidget *canvas ):
        QwtPlotPicker( canvas )
    {
        //数据什么时候显示
        setTrackerMode( QwtPlotPicker::AlwaysOn );
        //数据获取的坐标轴的选择
        setAxis(QwtPlot::xBottom, QwtPlot::yLeft);
    }

protected:
    //这个重载实现的是鼠标移动显示的数据
    virtual QwtText trackerTextF( const QPointF &pos ) const
    {
        QString s;
        s.sprintf( " 数值:%.4f ", pos.y() );
        QwtText text( s );
        text.setColor( Qt::white );
        //显示的样式的东西:
        QColor c(Qt::gray);
        text.setBorderPen( QPen( c ) );
        text.setBorderRadius( 6 );
        c.setAlpha( 150 );
        text.setBackgroundBrush( c );

        return text;
    }
};
然后就是使用的时候的简单的参考:

//初始化这个容器
    plot =  new QwtPlot(this);
    plot->setTitle( "标题" );
    //背景画布初始化(东西都是显示在这个画布上面)
    canvas = new QwtPlotCanvas(plot);
    //QFrame 边缘的效果
    canvas->setLineWidth(2);
    canvas->setMidLineWidth(2);
    canvas->setFrameStyle(QFrame::Raised|QFrame::Box);
    qDebug()<<canvas->lineWidth()<<canvas->midLineWidth()
              <<canvas->frameStyle();
    canvas->setBorderRadius( 5 );
    plot->setCanvas( canvas );
    plot->setCanvasBackground( Qt::white );
    //这里就是图例的样式,采用默认的,并在下方显示
    plot->insertLegend( new QwtLegend(this),QwtPlot::BottomLegend );
//    plot->axisTitle(QwtPlot::xBottom)
    //默认的坐标轴
    plot->setAxisTitle(QwtPlot::xBottom,"回合");
    //消除横坐标回合的小刻度
    plot->axisScaleDraw(QwtPlot::xBottom)->setTickLength(QwtScaleDiv::MajorTick,4);
    plot->axisScaleDraw(QwtPlot::xBottom)->setTickLength(QwtScaleDiv::MediumTick,0);
    plot->axisScaleDraw(QwtPlot::xBottom)->setTickLength(QwtScaleDiv::MinorTick,0);
//    (plot->axisScaleDiv(QwtPlot::xBottom)).setInterval(0,1);
    plot->setAxisTitle(QwtPlot::yLeft,"伤害");
    //纵坐标的话就是小刻度短一点
    plot->axisScaleDraw(QwtPlot::yLeft)->setTickLength(QwtScaleDiv::MajorTick,4);
    plot->axisScaleDraw(QwtPlot::yLeft)->setTickLength(QwtScaleDiv::MinorTick,2);
    //数据网格中的横线
    grid = new QwtPlotGrid();
    grid->enableX(false);
    grid->enableXMin(false);
    grid->setPen(Qt::darkGray,1);
    grid->attach( plot );
    //数据曲线
    curveFriend = new QwtPlotCurve();
    curveFriend->setTitle( "曲线1的标题" );
    //线的样式
    curveFriend->setPen( Qt::blue, 2 );
    QColor c(Qt::blue);
    c.setAlpha( 80 );
    //填充内容的样式
    curveFriend->setBrush(c);
    //反锯齿
    curveFriend->setRenderHint( QwtPlotItem::RenderAntialiased, true );

    symbolF = new QwtSymbol( QwtSymbol::Ellipse,
        QBrush( Qt::blue ), QPen( Qt::blue, 2 ), QSize( 4, 4 ) );
    curveFriend->setSymbol( symbolF );
    curveFriend->attach( plot );

    curveEnemy = new QwtPlotCurve();
    curveEnemy->setTitle( "<span style="font-family: Arial, Helvetica, sans-serif;">曲线2的标题"</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
    curveEnemy->setPen( Qt::red,2);
    QColor r(Qt::red);
    r.setAlpha( 80 );
    curveEnemy->setBrush(r);
    curveEnemy->setRenderHint( QwtPlotItem::RenderAntialiased, true );
    //数据曲线上的点的样式。
    symbolE = new QwtSymbol( QwtSymbol::Ellipse,
        QBrush( Qt::red ), QPen( Qt::red, 2 ), QSize( 4, 4 ) );
    curveEnemy->setSymbol( symbolE );
    curveEnemy->attach( plot );
    //鼠标显示,继承的一个自定义的类,实现鼠标的移动时显示的数据
    MyPicker* myPicker = new MyPicker(plot->canvas());
    //显示
    plot->show();
//    plot->setContentsMargins(10,10,10,10);
    plot->plotLayout()->setCanvasMargin(0);
    ui->gridLayout_main->addWidget(plot);
然后初始化之后可以动态的对统计图里面的数据进行修改跟新,比如弄个函数来进行:

void xx::setCurveData(QPolygonF pointsF ,QPolygonF pointsE,int N)
{
    //数据的输入
    curveFriend->setSamples( pointsF );
    curveEnemy->setSamples( pointsE );
    int canW = plot->canvas()->width();
    //根据传入的坐标数值来决定坐标的刻度间隔
    QFontMetrics bottomFontM = QFontMetrics(plot->axisFont(QwtPlot::xBottom));
    int TickNum = canW/bottomFontM.width("111");//计算可以显示多少个坐标值(这里假定是3位数最多)
    plot->setAxisScale( QwtPlot::xBottom, 1, N,N/TickNum );
    //最后需要刷新一下
    plot->replot();
}
这样就是大概的使用了,其实官方的文档比较的清晰了,结合他源码里的程序例子,都能实现我们需要的功能的。


QT实战2:QWT的安装和使用(qwt6.1.4,win10,QT5.12.3) QWT,即Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目, 可生成各种统计图,是为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。目前已经应用到许多工业领域。在WIN10,qt5.12.3环境下QWT6.1.4的安装和使用攻略。 阅读详情

相关推荐

QWT6.14的编译、配置、使用(Qt Creator5.14.2)

文章目录前言一、下载安装1. 下载2.编译二、配置与使用1.配置使用2.编译遇到问题参考文章: 前言 QWT, Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据,数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。该工具库.

尘埃飞舞 2677

Qwt源码解读之QwtText类和QwtTextLabel类

QwtText类表征Qwt中的一段文本。与QString相比,QwtText包含了一系列怎样渲染文本的属性特征。通过指定这些属性,你可以绘制各种各样的文本样式。 代码分析: 1、接口示例: double heightForWidth( double width, const QFont & = QFont() ) const; // 根据指定的宽度给出最合适的高度 QSiz

e5Max的专栏 5349

Qt安装Qwt库

Qt安装Qwt库

qq_41000080的博客 3187

QWT--添加Label

在使用QWT绘制曲线的时候,可能需要在画布上标明曲线的信息,例如我最近在做的静态录波,需要标明曲线的物理量,如下所示:在QWT–数据游标一文中,其实我已经通过自定义图元的方式实现过了。因为当时没有仔细看QWT源码,就只想到这个方式来实现自己的需求;但是自定义图元有个弊端(应该是我还没玩明白QWT),自定义的图元绘制是在物理坐标上,而不是画布坐标上,也就是说它始终印在我们的窗口的固定位置上,不会随着坐标轴范围的变化而变化。

贝勒里恩的博客 1304

【嵌入式——QT】QWT应用

QWT,全称Qt Widgets for Technical Applications,是一个基于Qt开发的第三方库。它主要为具有技术背景的程序提供GUI组件和一组实用类,用于生成各种统计图。QWT的主要功能包括二维绘图、刻度、滑块、刻度盘、罗盘、温度计、轮子和旋钮等,可用于控制或显示双精度类型的值、数组或范围。此外,QWT还支持任何Qt能够支持的系统环境,并兼容Qt4(4.4版本以上)和Qt5版本。在QWT的最新版本中,还提供了一些新的绘图控件以及对OpenGL的基本支持。

weixin_39723539的博客 1796

Qt显示数学公式

目前项目中需要显示数学公式,本来打算采用markdown,但是试了多种方式都不行,然后想过Latex,后面发现MathML,效果还不错,XML格式,然后XML解析的公式可以显示在QtMmlWidget控件中,也可以导出图片,显示在QLabel上。

贝勒里恩的博客 3913

Window下为Qt添加QWT!!!!

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

kaisuvi的专栏 2451

Qwt QwtLegend和QwtPlotLegendItem图例类详解

QwtLegend类是Qwt绘图库中用于显示图例的类。图例用于标识不同曲线、绘图元素或数据的意义,以便用户能够更好地理解图表中的数据。通过QwtLegend类,可以方便地在图表中添加、删除和设置图例的位置、方向和样式等属性。QwtPlotLegendItem类是Qwt绘图库中用于在绘图中添加图例项的类。与QwtLegend类不同,QwtPlotLegendItem类是将图例项直接添加到绘图中,而不是作为独立的图例显示。可以将QwtPlotLegendItem对象与绘图对象相关联,以便在绘图中显示图例项。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 1056

QWT6.0.1+win7下安装说明

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

donyac的专栏 692

Qt--编译安装QWT

一、QWT简介 QWT,全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图。 二、搭建环境 操作系统:windows10 Qt:5.13 QWT:6.13 三、前期准备 官网下载QWT源码:QWT官网:https://sourceforge.net/projects/qwt/files/qwt/ 由于这是外网,国内访问不太友好,在此提供百度网盘下载链接: 链接:https://pan.baidu.com/s/1yO

贝勒里恩的博客 1万+

QwtPlot3D 基于跨平台界面库 Qt 的3 维数据可视化控件

基于跨平台界面库 Qt 和 OPENGL 的3 维数据可视化控件。

ubuntu下安装Qt4

我们使用的操作系统是 Ubuntu12.04,使用目前最新版本的QT,安装起来即为简单,只要运行以下命令就行: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer 注意在这个版本的软件包中,qt4-dev-tools 包含了Qt Assistant及Qt Lingu

u011426656的专栏 932

QT画曲线图程序

QT 将数组里的数据画成曲线

QWT篇(一)——Qt部署QWT

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

iimchinese的博客 1412

QWT 6.1 QT第三方图形显示控件

QWT6.1是一个QT开发平台的第三方二维图形显示控件,在QT4.8.5 与VS2010中编译通过,挺漂亮

【学长笔记】关于车牌识别的CCPD数据集按比例划分

本文介绍了一个用于CCPD车牌数据集划分的Python脚本,主要功能包括:1) 将数据集按比例划分为训练集、验证集和测试集;2) 支持图像与标签文件校验;3) 可自定义划分比例和样本数量限制;4) 自动生成标准目录结构。脚本使用随机种子确保可重复性,并通过tqdm显示进度条。处理后数据可直接用于YOLO等目标检测模型的训练与评估,建议在预处理完成后立即执行划分以避免数据泄露。文章还提供了相关技术博客的参考链接。

apple_53308981的博客 1479

Hello Qt——QWT简介

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

天山老妖 4853

阿里云天池大数据长期赛:金融风控-贷款违约预测(含代码)

本次比赛让自己在大数据的处理流程上有了更明确的认知,从数据清洗、特征工程、数据建模,每一个过程都能学到很多经验和知识,值得去历练。

weixin_46685991的博客 1万+

Qt插件——QWT的使用(1)——安装和配置

目录 1.前言 2.下载最新的QWT 3.安装及编译 3.1 解压后的目录 3.2 编译控件 4.使用方法 4.1新建一个文件 4.2 导入库 1.前言 qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等,目...

weixin_48268568的博客 3657

全志F1C100S/F1C200S学习笔记(1)——基础简介及资料

资料: 荔枝派资料下载站 荔枝派github 荔枝派中文论坛 荔枝派DIY-github资料 荔枝派Nano 全流程指南 芒果派 坑网

丨晋丨 1万+

AMS TMF8820/21/28 SPAD 掩码和模式选择

为了实现最快的测距周期,将报告周期设置在测距周期以下的毫秒,以确保不会有等待时间。除了8X8固定了pixel的位置意外,其他模式客户可以设计自己的spad掩码,并将spad单独分配给通道。对于这些spad掩码,有一些约束。左下角提示红色代表光学中心,绿色方框表示单个spad,每个MP里可能有2X3个spad,也有2X5个spad,也有3X6+3个spad,这部分适配光学,最大的程度的利用spad区域。以下是几种预定义的spad掩码,非常灵活的配置,来适配各种3X3,4X4,8X8的模式选择。

dream it possible 701

QT Qwt配置和使用

QT Qwt配置和使用Qwt介绍下载地址配置方法下载后解压如下打开项目编译配置qt designer新建项目 Qwt介绍 QWT, Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据,数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘

qq_44963876的博客 1495

第十届MathorCup高校数学建模挑战赛-B题:养老服务床位需求预测与运营模式研究

当养老床位数增加时存在的商机,提出了相应的养老服务床位的运营商业模式。就业的可能性,建立多目标规划模型,尽可能同时满足三方面的要求。务床位的需求、制定合理的养老服务床位发展规划,是构建和谐社会、幸福社会。问题一的床位需求与市场类型的分类结果,查找关于国内养老院的相关数据,探。求,又能持续发展养老事业,同时还能促进社会就业的养老服务床位运营的商业。养老服务床位数的增加能够带来的就业方面因素的影响,并对这些因素进行一个。你们的模型及其结论为科学依据,对政府管理部门针对养老床位规划提出合理的。

getusushu的博客 1139
上一篇: qt实现的窗口吸附屏幕边缘,动画隐藏显示的效果,类似于qq主窗口 吸附 隐藏的效果
下一篇: qt利用委托:QStyledItemDelegate,实现tableview 的表格项的自定义显示,如插入图片,绘制控件
chaney_f
博客等级 码龄12年 30粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值