前言
最近在完善做毕业设计时编写的基于Qt的GNSS仿真平台,需要给平台添加实时数据分析绘图功能。
Qt刚好有比较完善的图表模块QtCharts,在QtCreator中使用也比较方便,不需要太多的配置。但本人还是喜欢在Visual Studio里写代码(懒),在VS中使用QtCharts需要进行一定环境的配置。本文主要为了挽救我拙劣的记忆力,做个存档,也希望能帮助到有用的人。
开发环境:Visual Studio 2019
Qt版本:5.15.1
1.目录配置
首先,在项目属性VC++目录中添加QtCharts的包含目录和库目录,如图。
包含目录选择Qt路径下对于编译器版本的include文件下的QtCharts路径;
库目录选择对应编译器版本下的lib路径即可。
2.附加依赖项配置
在项目属性连接器->输入中添加QtCharts的附加依赖项,添加如下字段
Qt5Chartsd.lib //debug模式下
Qt5Charts.lib //release模式下
添加后如图
3.代码编写
前述两步就把环境配置好了,下面就可以开始写程序了。
要调用QtCharts,在头文件或源文件中,添加如下语句:
#include <QtCharts>
using namespace QtCharts;
也可以使用宏定义,如下
#include <QtCharts>
QT_CHARTS_USE_NAMESPACE
之后就可以放心编写程序了。
4.程序示例
下面编写一个简单的三角函数曲线验证一下功能。
QChartView* chartView = new QChartView(this); //创建 ChartView
QChart* chart = new QChart(); //创建 Chart
chart->setTitle("简单函数曲线");
chartView->setChart(chart); //Chart添加到ChartView
this->setCentralWidget(chartView);
//创建曲线序列
QLineSeries* series0 = new QLineSeries();
QLineSeries* series1 = new QLineSeries();
series0->setName("Sin曲线");
series1->setName("Cos曲线");
chart->addSeries(series0); //序列添加到图表
chart->addSeries(series1);
//序列添加数值
qreal t = 0, y1, y2, intv = 0.1;
int cnt = 100;
for (int i = 0; i < cnt; i++)
{
y1 = qSin(t);
series0->append(t, y1);
y2 = qSin(t + 20);
series1->append(t, y2);
t += intv;
}
//创建坐标轴
QValueAxis* axisX = new QValueAxis; //X 轴
axisX->setRange(0, 10); //设置坐标轴范围
axisX->setTitleText("time(secs)"); //标题
QValueAxis* axisY = new QValueAxis; //Y 轴
axisY->setRange(-2, 2);
axisY->setTitleText("value");
chart->setAxisX(axisX, series0); //为序列设置坐标轴
chart->setAxisY(axisY, series0); //
chart->setAxisX(axisX, series1); //为序列设置坐标轴
chart->setAxisY(axisY, series1); //
注意:由于代码使用了中文字段,在Qt中可能会导致中文显示乱码,如图
解决方法:使用UTF-8编码即可正常显示中文,在程序中添加如下代码
#pragma execution_character_set("utf-8")
之后就可以正常显示了,如图
5.总结
QtCharts的开发准备就基本做好了,接下来进行进一步的应用学习,有空再写。文章若有谬误,欢迎指正。