Qt qml 下使QtCharts

437 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 titlle bar

欢迎来到我的博客,希望这篇文章对你有所帮助,如果觉得不错,请点赞搜藏哈。

[TOC]

Qt Qml 下使用QtCharts

先说场景,项目中需要用到QtCharts,所以就得搞一下了,最简单的方式还是直接看Qt的帮助文档。

image-20210506150559087

1.1 引入文档

根据帮助文档显示,我们只需要引入对应的包就可以了,在项目中引入QtCharts模块,如下

import QtCharts 2.14

但是呢,如果仅仅是按照文档中那样,是不性的,这是我第一次引入后的编译的结果。

image-20210506151052003

所以呢,再次找帮助文档,看到了下面的部分,我是需要在pro文件中包含 charts的。

image-20210506151718369

1.2 在pro中包含 charts

在pro文件中加入charts,如下

QT += quick core network widgets charts

image-20210506152049685

再次编译程序,其实这次编译更严重了,你会发现编译器直接告诉你这个模块的没有安装,如下

image-20210506152302322

这个时候你就要开始怀疑你Qt是不是安装有问题了,因为QtCharts模块确实是需要你在安装的时候选择安装的,不过一般都是全选安装,不会是这个原因。

1.3 运行官方例子

我们找一个官方的实例看一下,是没有问题的,那么我们的出在哪里了。

image-20210506152806087

1.4 修改main文件

image-20210506152915463

对比我们就可以发现有问题,如下

image-20210506153528919

修改我们的文件,把QGuiApplication替换为QApplication,至于为什么,可以百度。

1.5 手动拷贝 相关文件

完成上面的内容后,我们再次编译,你会发现,还有问题,还是报没有安装问题,但是我们运行官网demo是没有问题的,那证明我们是安装了QtCharts模块的。

image-20210506153701042

到这里,我也没有办法了,真的是想不到原因出来哪里,不过还好有万能的百度,我找的下面这个文章,链接在这里:blog.csdn.net/my393661/ar…

关键信息如下:

image-20210506154043708

按照说明,手动复制复制一下文件,如下图所示

image-20210506154312618

image-20210506154457839

再次编译一下

image-20210506154640122

终于可以了。以上就是在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());                                         //重置大小
}

博客签名2021