文档章节

QtChart-Qt官方绘图库安装与使用

尘中远
 尘中远
发布于 2016/11/04 13:19
字数 1199
阅读 230
收藏 0

#简介

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

#下载 这里用git下载QtChart,参考Qt Charts 5.7.0 安装教程 如果大家还用Qt5.4以下版本请升级完再看,Qt5.4以下是不支持滴 Git地址:https://github.com/qtproject/qtcharts.git

git clone https://github.com/qtproject/qtcharts.git

这里写图片描述

下载完目录是这样的:

这里写图片描述 开始编译前需要下载Perl:activePerl

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

#编译QtChart

此时用Qt Creator加载qtcharts.pro

加载后Qt Creator界面

一杯茶的时间后:

编译成功后界面

此时在生成目录下生成:

生成文件

#安装

编译结束后就可以进行安装了 选择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:

#include <QtCharts>
using namespace QtCharts;

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

这里写图片描述

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

这里写图片描述

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

#include <QtCharts>
QT_CHARTS_USE_NAMESPACE

放置在widget.h上:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace 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;x<10;x+=0.1)
{
    line1->append(x,sin(x));
}
QChart* c = new QChart();
c->addSeries(line1);
ui->chart->setChart(c);

效果如下:

这里写图片描述

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

#include <QtCharts>
QT_CHARTS_USE_NAMESPACE

否则会发生编译错误!

完!

#参考文献

[1]Qt Charts 5.7.0 安装教程http://www.jianshu.com/p/8d9a817aa6b9

[2]Qt Chart 5.7.0 傻瓜安装教程http://www.cnblogs.com/findumars/p/5152294.html

[3]QtCharts编译(编译环境MSVC12)和VS2013配置QtCharts http://blog.csdn.net/wokaowokaowokao12345/article/details/50933447

© 著作权归作者所有

尘中远
粉丝 1
博文 26
码字总数 47436
作品 0
朝阳
程序员
私信 提问
Python GUI教程(十三):在GUI中绘制K线图

文章首发个人博客:http://zmister.com Python GUI教程(一):在PyQt5中创建第一个GUI图形用户界面 Python GUI教程(二):添加窗口小部件到图形用户界面GUI中 Python GUI教程(三):在GUI...

州的先生
2017/12/01
0
0
Qt5 绘图 - 利用 QPixmap 和 QPainter 实现在 paintevent() 函数外绘图

Qt5 绘图 - 利用 QPixmap 和 QPainter 实现在 paintevent() 函数外绘图 Qt 的绘图操作,是使用 QPainter 在 paintevent() 函数中进行的,所有绘图操作都要放进函数 paintevent() 中。 在实际...

sigmarising
2018/04/12
0
0
Qt 安装包制作框架--Qt Installer Framework

Qt Installer Framework 是 Qt 官方提供的安装包制作框架。 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布。这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执...

Force武装卫队
2015/04/08
6.2K
1
Qt配置使用VS2010进行开发

Qt – 一个跨平台应用程序和UI开发框架 它包括跨平台类库、集成开发工具和跨平台 IDE。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用...

长平狐
2013/01/06
296
0
在Qt下如何使用OpenGL进行绘图?ps:不用Qt提供的OpenGL类

如何在Qt下使用独立的OpenGL库在Qt控件上进行绘图?求指导

JRui520
2017/08/06
389
1

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
5
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
5
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
7
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部