当前位置:首页 > 芯闻号 > 充电吧
[导读]简介Qt的线性绘图控件有大名鼎鼎的Qwt,ChartDirector,小巧玲珑的QCustomPlot,当然还有自家的QtChart。长久以来QtChart在Qt家族里一直是收费的模块,只有商业版才可

简介

Qt的线性绘图控件有大名鼎鼎的Qwt,ChartDirector,小巧玲珑的QCustomPlot,当然还有自家的QtChart。长久以来QtChart在Qt家族里一直是收费的模块,只有商业版才可以使用,但Qt5.7之后将开放其权限,可参见:Qt 5.7 亮瞎眼的更新。下面将介绍如何安装QtChart并进行简单的绘图。

下载

这里用git下载QtChart,参考Qt Charts 5.7.0 安装教程
如果大家还用Qt5.4以下版本请升级完再看,Qt5.4以下是不支持滴

下载完目录是这样的:


开始编译前需要下载Perl:activePerl

直接下一步点到头安装。
安装完成后需要重启一下电脑或者手动激活一下环境变量。

编译QtChart

此时用Qt Creator加载qtcharts.pro

一杯茶的时间后:

此时在生成目录下生成:

安装

编译结束后就可以进行安装了
选择Qt Creator项目栏 - 运行标签 - 添加部署构建

这里需要添加两个部署,一个是QtChart的安装,一个是QtChart文档的编译。
如图所示配置完后,点击运行

这时会有很多复制的信息,它会把编译好的dll和头文件复制到Qt的安装目录下

打开Qt目录下的lib文件夹和include文件夹可以看到被复制过来的QtChart信息。
这时,再看QtChart的生成目录,比第一次编译时多了一个doc文件夹
你只要把这个doc文件夹里的qtcharts文件夹和qtcharts.qch文件复制到Qt安装目录下的Docs文件夹内对应版本文件夹下即可

这时打开Qt Assisant,搜QtChart,即可看到说明文档!

这时你的QtChart大部分已经配置完成。
还有example的安装,可参看文献[3]

测试QtChart

下面演示如何用Qt Creator的界面设计师创建一个QtChart,其他方法可见参考文献。
首先新建一个Widget项目
使用一个Widget作为Chart的载体,在界面上放置一个Widget


右键点击这个widget,把这个Widget提升。


把这个Widget提升为QChartView

QtChart有两类绘图窗口容器,分别为QChart(QPolarChart)和QChartView,其区别官方文档说明为:

QChart is a QGraphicsWidget that you can show in a QGraphicsScene. It manages the graphical representation of different types of series and other chart related objects like legend and axes. If you simply want to show a chart in a layout, you can use the convenience class QChartView instead of QChart.

QChartView is a standalone widget that can display charts. It does not require separate QGraphicsScene to work. If you want to display a chart in your existing QGraphicsScene, you need to use the QChart (or QPolarChart) class instead.

因为这里是单独作为一个窗体放置,因此用QChartView

提升的类名为QChartView  
头文件也为QChartView ,Qt每个类都有个无后缀的同类名文件,方便include
尝试编译一下程序会出现一个错误:

官方文档说明,使用QtChart还需要对pro文件进行设置:

To create a simple application, start by creating a new Qt Gui Application project in Qt Creator and add this line to the .pro file of the project:

QT += charts

In the main.cpp file, include the module headers and declare namespace usage:

#includeusing namespace QtCharts;

其中,可以使用QT_CHARTS_USE_NAMESPACE替代using namespace QtCharts;

添加完所需要的内容,编译还是发生错误,错误定位到ui_widget里

前面说了,用到QtChart的地方需要包含#include以及命名空间using namespace QtCharts;(或者QT_CHARTS_USE_NAMESPACE替代using namespace QtCharts;)
但是ui_widget文件是自动生成的,不能再此文件里进行修改,此文件是包含在widget.h的一个叫Ui的命名空间中,因此,可以把

#includeQT_CHARTS_USE_NAMESPACE

放置在widget.h上:

#ifndef WIDGET_H
#define WIDGET_H

#includenamespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

此时在编译即可:


在构造函数里添加:

QLineSeries* line1 = new QLineSeries();
for(double x=0;xappend(x,sin(x));
}
QChart* c = new QChart();
c->addSeries(line1);
ui->chart->setChart(c);

效果如下:

总结

在使用界面设计师用QtChart时,需要在对应的界面头文件上添加:

#includeQT_CHARTS_USE_NAMESPACE

否则会发生编译错误!

完!


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘 要 :为解决制鞋行业中喷胶精度不高、灵活性差、生产效率低的问题,设计一种基于机器视觉的鞋模喷胶系统。该系统硬件由工业摄像头、工控机及路由器构成,软件则采用图像识别库 OpenCV 与图形界面应用程序开发框架 Qt 编...

关键字: 机器视觉 图像处理 鞋模 喷胶 OpenCV QT

嵌入式系统是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

关键字: QT 嵌入式 C++

摘 要:仓储作为物流与供应链的核心环节,对食品安全的控制起着至关重要的作用。温湿度是影响粮食仓储过程安全与品质的重要因素。文中使用无线传感网络进行数据采集,通过Qt平台设计软件系统,并借助数据库进行数据存储与分析处理,实...

关键字: 成品粮 仓储 温湿度监测 无线传感网络 QT

在此部件上绘制行号,并将其放置在CodeEditor的viewport()的左边距区域上,QWidget类也可以帮助我们对其内容进行滚动。

关键字: QT 代码编辑器

不管是Qt新手还是开发过qt的群体来说,对Qt Designer、Qt Quick Designer、Qt Creator这几个应用程序肯定是熟悉的。

关键字: QT IDE C

在当今社会,人们的生活水平普遍提高,工作强度越来越大,营养的过剩和运动量的减少,导致心脑血管疾病的发病率是越来越高。

关键字: Linux QT GPRS 远程集群式 心脏病人实时诊断系

qt值得学习吗? 嵌入式要学的东西真的很多,我们可能会说不写界面的话就不用学qt了?我不赞同。

关键字: 嵌入式 QT UI

什么是qt?简单点说,Qt 就是一个跨平台的 C++ 图形用户界面库,可以同时支持桌面应用程序开发、嵌入式开发和移动开发,覆盖了现有的所有主流平台。

关键字: QT 程序 开发

qt值得学习吗? 嵌入式要学的东西真的很多,我们可能会说不写界面的话就不用学qt了?我不赞同,原因是……

关键字: 嵌入式 QT

摘要Qt是欧洲人创始的一个优秀的C++开发框架,API简单易用,社区庞大,资源丰富;但Qt太重量级了(需要很多的RAM和ROM,非常复杂)。为了解决这个问题,我开发了GOSP这个框架。GOSP在不依赖

关键字: QT 开发
关闭
关闭