本文已参与「新人创作礼」活动,一起开启掘金创作之路。
欢迎来到我的博客,希望这篇文章对你有所帮助,如果觉得不错,请点赞搜藏哈。
[TOC]
Qt Qml 下使用QtCharts
先说场景,项目中需要用到QtCharts,所以就得搞一下了,最简单的方式还是直接看Qt的帮助文档。
1.1 引入文档
根据帮助文档显示,我们只需要引入对应的包就可以了,在项目中引入QtCharts模块,如下
import QtCharts 2.14
但是呢,如果仅仅是按照文档中那样,是不性的,这是我第一次引入后的编译的结果。
所以呢,再次找帮助文档,看到了下面的部分,我是需要在pro文件中包含 charts的。
1.2 在pro中包含 charts
在pro文件中加入charts,如下
QT += quick core network widgets charts
再次编译程序,其实这次编译更严重了,你会发现编译器直接告诉你这个模块的没有安装,如下
这个时候你就要开始怀疑你Qt是不是安装有问题了,因为QtCharts模块确实是需要你在安装的时候选择安装的,不过一般都是全选安装,不会是这个原因。
1.3 运行官方例子
我们找一个官方的实例看一下,是没有问题的,那么我们的出在哪里了。
1.4 修改main文件
对比我们就可以发现有问题,如下
修改我们的文件,把QGuiApplication替换为QApplication,至于为什么,可以百度。
1.5 手动拷贝 相关文件
完成上面的内容后,我们再次编译,你会发现,还有问题,还是报没有安装问题,但是我们运行官网demo是没有问题的,那证明我们是安装了QtCharts模块的。
到这里,我也没有办法了,真的是想不到原因出来哪里,不过还好有万能的百度,我找的下面这个文章,链接在这里:blog.csdn.net/my393661/ar…
关键信息如下:
按照说明,手动复制复制一下文件,如下图所示
再次编译一下
终于可以了。以上就是在qml 下使用 QtCharts的方法了,希望对小伙伴们有所帮助。
最后加一部分代码
/**
* @brief MainWindow::initChartView
* 初始化绘制视图
*/
void MainWindow::initChartView()
{
xAxis = new QValueAxis(); //新建x轴
xAxis->setRange(0,1); //设置x轴范围
xAxis->setGridLineVisible(false); //设置不显示网格
yAxis = new QValueAxis(); //新建y轴
yAxis->setRange(0,1); //设置y轴范围
xAxis->setTickCount(11); //设置精度
yAxis->setTickCount(11); //设置精度
series = new QSplineSeries(); //新建折线图实例
m_chart = new QChart(); //新建Qchart实例
m_chart->addSeries(series); //为Qchart实例添加折线
m_chart->legend()->hide(); //设置隐藏图例
m_chart->setAnimationOptions(QChart::SeriesAnimations); //设置动画
m_chart->addAxis(xAxis,Qt::AlignBottom); //为Qchart添加x轴
m_chart->addAxis(yAxis,Qt::AlignLeft); //为Qchart添加y轴
series->attachAxis(xAxis); //将折线和坐标轴联动
series->attachAxis(yAxis); //将折线和坐标走联动
series->setUseOpenGL(true); //设置折线使用openGL渲染
series->setPointsVisible(true); //设置显示坐标
m_chartView = new QChartView(ui->widget_chart); //新建Qchart视图
m_chartView->setChart(m_chart); //为Qchart视图添加Chart
m_chartView->setRenderHint(QPainter::Antialiasing); //开启抗锯齿
m_chartView->setGeometry(ui->widget_chart->rect()); //重置大小
}
/**
* @brief MainWindow::initChartViewShow
* 初始化显示view视图
*/
void MainWindow::initChartViewShow()
{
xAxisShow = new QValueAxis(); //新建x轴
xAxisShow->setRange(0,1); //设置x轴范围
xAxisShow->setGridLineVisible(false); //设置x轴不显示网格
yAxisShow = new QValueAxis(); //新建y轴
yAxisShow->setRange(0,1); //设置y轴范围
xAxisShow->setTickCount(11); //设置精度
yAxisShow->setTickCount(11); //设置精度
seriesShow = new QSplineSeries(); //新建折线图实例
m_chartShow = new QChart(); //新建Qchart实例
m_chartShow->addSeries(seriesShow); //为Qchart实例添加折线
m_chartShow->legend()->hide(); //设置隐藏图例
m_chartShow->setAnimationOptions(QChart::SeriesAnimations); //设置动画
m_chartShow->addAxis(xAxisShow,Qt::AlignBottom); //为Qchart添加x轴
m_chartShow->addAxis(yAxisShow,Qt::AlignLeft); //为Qchart添加y轴
seriesShow->attachAxis(xAxisShow); //将折线和坐标轴联动
seriesShow->attachAxis(yAxisShow); //将折线和坐标轴联动
seriesShow->setUseOpenGL(true); //设置折线使用openGL渲染
seriesShow->setPointsVisible(true); //设置显示坐标
m_chartViewShow = new QChartView(ui->widget_chartShow); //新建Qchart视图
m_chartViewShow->setChart(m_chartShow); //为Qchart视图添加Chart
m_chartViewShow->setRenderHint(QPainter::Antialiasing); //开启抗锯齿
m_chartViewShow->setGeometry(ui->widget_chartShow->rect()); //重置大小
}