VS2017中使用QT Chart图表
有关QtChart的介绍在这就不详谈了,想要具体了解的百度就可以,官网和网站大多数都是介绍如何在QtCreator中使用QtChart,而本文主要介绍如何在vs中使用。
使用工具:VS2017+Qt5.13.2
准备工作
首先,安装以下软件:
- VS2017.下载安装教程
- Qt开发包,最好是qt5.9以上的版本,本篇教程以Qt5.13.2为例讲解
- Qt VS Tools插件。
- 将上述软件安装完成后,需要在 VS2017中配置QtVSTools插件,具体过程如下:
5.添加环境变量:
创建过程:
1、新建一个Qt的gui工程,一路next
2、打开ui文件,在designer中拖动一个widget,并提升窗口部件为QChartView
3、接下来先不要编译,因为我们还没有把QtChart的库文件包含进来,首先打开项目的属性,注意在添加包含目录的时候,要把QtCharts那个路径添加进去,这样ui文件中提升的那个头文件就不会报错
VC++目录->包含目录->添加:
D:softsetupqt5.13.25.13.2msvc2017_64includeQtCharts
D:softsetupqt5.13.25.13.2msvc2017_64include
库目录:
D:softsetupqt5.13.25.13.2msvc2017_64lib
下面添加附加依赖库:
连接器->输入->添加依赖项:Qt5Chartsd.lib
设置完了之后就可以点击确定,并进行编译,此时编译之后会出现错误,这是因为没有写命名空间:
4、那么我们在添加命名空间的时候不要在ui_xxx.h文件里面进行添加,因为这是自动生成的文件,每一次添加新的控件并编译的时候就把你添加的信息给删除掉,这时我们可以添加到刚开始新建的文件中去,见下图;
如果图中的命名空间不能用,(试过在头文件中不能用),则可以换另外一个:using namespace QtCharts;
此时,再进行编译就不会出现错误
5、然后,我们在这个cpp文件下面,写上简单的函数进行编译运行验证,见图:
自此,构建成功,谢谢!
我踩过的坑,希望大家不要再踩一遍,仔细按照上面的进行,运行不了你找我!
后续探索,有时间写...
全部代码:chartview.cpp
#include "chartview.h"
chartView::chartView(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
void chartView::on_pushButton1_clicked()
{
chartDispaly();
}
void chartView::on_pushButton2_clicked()
{
initChartView();
}
void chartView::chartDispaly()
{
QSplineSeries *series = new QSplineSeries();
for (float i = 0; i < 100; i++)
{
series->append(i, sin(0.5*i));
}
QChart *chart = new QChart();
chart->addSeries(series);
chart->legend()->hide();
chart->createDefaultAxes();
chart->setTheme(QChart::ChartThemeDark);
//方法1
ui.widget->setChart(chart);
//方法2
//QChartView *chartView = new QChartView(chart);
//chartView->setRenderHint(QPainter::Antialiasing);
//this->setCentralWidget(chartView);
}
void chartView::initChartView()
{
QChart *chart2 = new QChart();
QLineSeries *series = new QLineSeries();
*series << QPointF(1.0, 1.0) << QPointF(2.0, 73.0) << QPointF(3.0, 268.0) << QPointF(4.0, 17.0)
<< QPointF(5.0, 4325.0) << QPointF(6.0, 723.0);
chart2->addSeries(series);
chart2->legend()->hide();//隐藏图例
chart2->setTitle("Logarithmic axis example");//设置图标标题
QValueAxis *axisX = new QValueAxis();
axisX->setTitleText("Data point");
axisX->setLabelFormat("%im");
axisX->setTickCount(series->count());
chart2->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);
QLogValueAxis *axisY = new QLogValueAxis();
axisY->setTitleText("Values");
axisY->setLabelFormat("%gkg");
axisY->setBase(8);
//axisY->setMinorTickCount(-1);
chart2->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisY);
QChartView *chartView = new QChartView(chart2);
chartView->setRenderHint(QPainter::Antialiasing);
//connect(series, &QLineSeries::hovered, this, &QtGuiApplication1::showValue);
this->setCentralWidget(chartView);
}
chartview.h
#pragma once
#include <QtWidgets/QMainWindow>
#include <QtCharts>
#include "ui_chartview.h"
class chartView : public QMainWindow
{
Q_OBJECT
public:
chartView(QWidget *parent = Q_NULLPTR);
private:
Ui::chartViewClass ui;
void chartDispaly();
void initChartView();
private slots:
void on_pushButton1_clicked();
void on_pushButton2_clicked();
};
github源码地址:https://github.com/zyr365/chartView
- 《WCF服务编程》关于“队列服务”一个值得商榷的地方
- 我的数据访问函数库的源代码(二)—— SQL语句部分
- 来源于WCF的设计模式:可扩展对象模式[上篇]
- 我的数据访问函数库的源代码(三)——返回结构数组
- 我的数据访问函数库的源代码(四)—— 存储过程部分,包括存储过程的参数的封装
- [WCF 4.0新特性] 路由服务[实例篇]
- [WCF 4.0新特性] 默认终结点
- 三层架构之我见 —— 不同于您见过的三层架构。
- 来源于WCF的设计模式:可扩展对象模式[下篇]
- [WCF 4.0新特性] 标准终结点与无(.SVC)文件服务激活
- 我的数据访问类(第二版)—— for .net2.0 (二)
- 我的数据访问类(第二版)—— for .net2.0 (一)
- [WCF 4.0新特性] 路由服务[原理篇]
- 通过“访问多种数据库”的代码来学习多态!(.net2.0版)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法