精华内容
下载资源
问答
  • qt绘制图表

    2016-10-17 12:18:42
    qwt QCustomPlot都可以画 但是坐标轴都只能在外侧四周 现在我想要的效果是在内侧也可以加坐标轴 就不知道有什么 办法了 貌似QtChart可以 但是只能是Qt5.4以上版本才免费 我现在用的是4.8 所以大大们有什么建议?
  • 但是Qt自己却一直没有提供自带的图表库,这就使得 QWT、QCustomPlot 等第三方图表库有了巨大的生存空间,为了降低开发成本,大家都涌向了这些第三方库。这种情况一直持续到 Qt5.7 版本后 Qt Charts 的发布。Qt ...

    一、前言

    自从 Qt 发布以来,给广大跨平台界面研发人员带来了无数的福利。但是Qt自己却一直没有提供自带的图表库,这就使得 QWT、QCustomPlot 等第三方图表库有了巨大的生存空间,为了降低开发成本,大家都涌向了这些第三方库。这种情况一直持续到 Qt5.7 版本后 Qt Charts 的发布。Qt Charts 是 Qt 自带的组件库,包含折线、曲线、饼图、棒图、散点图、雷达图等等各种常用的图表。只是要注意协议的约束:GPLV3。

    我们今天使用 QChartView 来做折线图。QChartView 派生自 QGraphicsView,但它可专门用来展示 QChart 图表。


    二、概念热身

    先给大家做一下概念热身。


    坐标轴-QAbstractAxis:

    图表中,一般都有 X、Y 坐标轴,复杂一些的还带有 Z 轴。对应到 Qt 的图表也有 X、Y 轴对象。但是今天,我们先不展开介绍。如果我们不创建轴坐标对应的对象,可以使用 Qt 的默认轴对象。后面我们会介绍用法。


    系列-QAbstractSeries:

    不论是曲线、饼图、棒图还是其他图表,其中展示的内容本质都是数据。一条曲线是一组数据,一个饼图也对应一组数据。在 Qt Charts 中,这些一组组的数据被称作系列。对应不同类型的图表 Qt 提供了不同的系列。系列除了负责存储、访问数据,应该还提供了数据的绘制方法,比如折线图和曲线图分别对应 QLineSerie 和 QSPLineSerie。我们可以用不同的系列达到不同的展示目的。


    图例-Legend:

    类似于 Excel,Qt Charts 中也提供了图例,并且还可以显示或者隐藏图例。


    图表-QChart

    Qt 提供了 QChart 类来封装前面所说的内容,比如坐标轴、系列、图例等。QChart 承担了一个组织、管理的角色。QChart 派生自 QGraphicsObject,因此它实际上是一个图元 item。我们可以从 QChart 获取到坐标轴对象、数据系列对象、图例等等,并且可以设置图表的主题、背景色等样式信息。


    视图-QChartView:

    负责 QChart 的展示。QChart 本身只负责图表内容的组织、管理。图表的展示由视图负责,这个视图就是 QChartView。QChartView 派生自 QGraphicsView,只是它专门提供了几个面向 QChart 的接口,比如 setChart(QChart*)等。


    三、正文

    好了概念热身完毕,下面进入主题:用 QChartView 绘制折线图。


    步骤如下:

    1、准备工作;

    2、修改 pro 文件;

    3、 提升 widget 控件为 QChartView;

    4、修改头文件;

    5、构建图表、构建系列,并将图表绑定到视图;

    6、运行程序。


    下面来分别看一下:

    1、准备工作

    需要在安装 Qt 时带上了 charts,否则后面工作无法开展。

    • 对于编译方式安装的 Qt,需要注意在 configure 时不要跳过 charts。
    • 对于安装包方式安装的 Qt,需要注意在安装时,确保 charts 组件被选中。

    新建一个 Qt Widgets Application 项目。


    2、修改 pro 文件

    在 pro 中,使用如下语句包含 charts 库:

    QT += charts


    3、 提升 widget 控件为 QChartView

    在绘制 ui 窗体时,从 designer 的工具箱中选择一个 “Widget” 类型的控件,然后在它上面单击鼠标右键,选择 “提升为”。

    在弹出的界面中,填写 "提升的类名称" 为: QChartView,头文件名称会自动生成,我们不用关心。然后单击“添加”按钮即可。


    4、修改头文件

    在头文件中,我们需要添加下面两行代码:

    #include <QtCharts>
    QT_CHARTS_USE_NAMESPACE

    这两句代码的作用是包含 QChart 所需的头文件,并声明 Qt Charts 的命名空间。


    5、构建图表、构建系列,并将图表绑定到视图

    在 Wdiget 的构造函数中添加以下代码:

    // 构建图表对象
    QChart* chart = new QChart();
    
    // 构建折线系列对象
    QLineSeries *series = new QLineSeries();
    for (quint32 i = 0; i < 100; i++) 
    {
        // 参数 x 为循环自增变量 i,参数 y 为正弦函数Y值
        series->append(i, sin(static_cast<double>(0.6f*i)));
    }
    
    // 将系列添加到图表
    chart->addSeries(series);
    // 基于已添加到图表的 series 来创建默认的坐标轴
    chart->createDefaultAxes(); 
    
    // 将图表绑定到视图
    ui->widget->setChart(chart);

    上面的代码构建了一个 QChart 对象,然后构建了一个折线系列对象,并且对它进行初始化。方法是调用 append() 接口,传递的参数 x、y 对应的是一组坐标数据,就是折线上的一个点。然后,将系列添加到图表,并创建默认的坐标轴。最后,将图表绑定到视图。


    6、运行程序

    运行程序,效果如下:

    Qt_chartExample.png


    用Qt Charts绘制,大概分为四个部分:数据(QXYSeries)、图表(QChart)、坐标轴(QAbstractAXis)和视图(QChartView)。

    要注意的是 QChart要先添加数据(QXYSeries),再加载坐标轴(加载轴的过程是先添加轴到 Chart 上,再附加轴到 Series 上)。


    参考:

    QTCharts入门 使用QChartView做折线图


    转载于:https://www.cnblogs.com/linuxAndMcu/p/11381839.html

    展开全文
  • Qt - QTChart绘制图表

    千次阅读 2020-09-26 21:43:04
    主要介绍QT Chart ,包括该组件的主要构成;常见的一些属性设置及交互,动态图表的实现,如何解决卡顿问题。

    前言

    这是一段做作的前言,摘自网络。
    在Qt5.7之前,Qt Charts 一直是商业版才有,所以在此之前的Qt开发人员若想绘制图表需采用第三方库,常见的是Qt Charts是Qt提供的图表模块,在Qt5.7之前只有商业版才有,但是从Qt5.7之后,社区版本也包含了Qt Charts。Qt Charts可以很方便的绘制常见的折线图、柱状图、饼图等图表。它基于Qt的Graphics View架构,核心组件是QChartView和QChart。其中QChartView正是继承于QGraphicsView类,因此它也可以作为Graphics View中的视图组件。另一个QChart则由QGraphicsWidget继承而来,继续向上追溯,发现他们都继承于QGraphicsItem,所以QChart是图形项。

    准备工作

    安装QChart组件

    Qt 安装时,默认情况下不安装 QCharts组件 ,所以如果需要使用 QCharts组件 ,我们需要先更新一下 Qt组件

    首先在我们的 Qt安装路径 下找到 MaintenanceTool

    在这里插入图片描述
    若在下一步出现 “要继续此操作,至少需要一个有效且已启用的储存库。”;则需要在设置中设置存储库。

    Qt 存储库(戳我)
    在这里插入图片描述
    ps:我采用的是清华镜像,只需点击HTTP 进入镜像地址并移动至图示目录下,复制如上图所示的 HTTP地址(点击此处偷懒) 作为存储库,随后添加:

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    项目配置

    .pro文件中添加

    QT    += charts
    

    .h文件中添加

    QT_CHARTS_USE_NAMESPACE
    

    QCharts必须的头文件

    #include <QChartView>
    #include <QChart>
    

    主要组成部分

    Qt Charts 模块是一组易于使用的图标组件,基于 Qt 的 GrapHics View 架构,核心是 QChartViewQChart

    QChartView

    QChartViewQChart 的视图组件,用于显示。在 QtCreator 中使用 QChartView 可以放置一个 QWidget,然后升级为 QChartView

    QChartView 的内容很少,建议直接过一遍文档 QChartView

    QChartView继承关系如下:

    QWidget
    QFrame
    QGraphicsObject
    QGraphicsView
    QChartView

    QChart

    QChart 管理不同类型的序列和其他与图表相关的对象,例如坐标轴及图例。

    QChart 继承关系如下:

    QObject
    QGraphicsObject
    QGraphicsItem
    QGraphicsWidget
    QGraphicsItem
    QChart

    序列

    常见的序列如下:

    • QBarSeries (柱状图)

    • QHorizontalBarSeries (水平柱状图)

    • QHorizontalPercentBarSeries (水平百分比柱状图)

    • QHorizontalStackedBarSeries (水平层叠图)

    • QPercentBarSeries 百分比柱状图)QStackedBarSeries (层叠图/堆叠的条形图)

    • QAreaSeries (面积图)

    • QBoxPlotSeries (形图/盒须图)

    • QPieSeries (饼图)

    • QXYSeries (线性图、曲线图、散点图的基类)

    • QLineSeries (折线图)

    • QSplineSeries (曲线图)

    • QScatterSeries (散点图)

    序列继承关系如下:

    QAbstractSeries
    QBoxPlotSeries
    QAreaSeries
    QAbstractBarSeries
    QCandlestickSeries
    QPieSeries
    QXYSeries
    QBarSeries
    QHorizontalBarSeries
    QHorizontalPercentBarSeries
    QHorizontalStackedBarSeries
    QPercentBarSeries
    QStackedBarSeries
    QLineSeries
    QScatterSeries
    QSplineSeries

    本文仅介绍最常用的 QLineSeries

    坐标轴

    坐标轴封装了刻度,标签,网格线,标题等属性。

    坐标轴有以下几种:

    • QBarCategoryAxis
      类别坐标轴,用字符串作为坐标轴的可读,用于图表的非数值坐标轴
    • QDateTimeAxis
      时间坐标轴,用作时间数据的坐标轴
    • QLogValueAxis
      对数数值坐标轴,作为数值类数据的对数坐标轴
    • QValueAxis
      数值坐标轴,用作数值型数据的坐标轴
    • QCategoryAxis
      分组数值坐标轴,可以为数值范围设置标签

    坐标轴继承关系如下:

    AbstractAxis
    QBarCategoryAxis
    QDateTimeAxis
    QLogValueAxis
    QValueAxis
    QCategoryAxis

    图例

    图例是对图表上序列的补充说明。我们可以设置序列颜色及其文字说明、并控制序列显示的位置。

    此外,图例中还有一个 QLegendMarker 类,可为每个序列的图例生成一个类似QChrckedBox 的组件;单击序列的标记,可以控制序列是否显示。

    下面是官方例程 chartthemes 的运行效果。

    在这里插入图片描述
    上述内容,建议通过官方例程配合类文档学习。

    静态图表

    在这里插入图片描述

    源代码

        chart = new QChart();
    
        mAxY = new QValueAxis();
        mAxX = new QValueAxis();
        mLineSeries = new QLineSeries();
    
        //y轴范围
        mAxY->setRange(0, 10);
        // Y轴分等份
        mAxY->setTickCount(11);
        mAxX->setRange(0,10);
        mAxX->setTickCount(11);
    
        // 将系列添加到图表
        chart->addSeries(mLineSeries);
        chart->setTheme(QtCharts::QChart::ChartThemeBrownSand);
    
        mAxX->setTitleText(QString(tr("ImageNumber")));
        mAxY->setTitleText(QString(tr("ReadRate(%)")));
        chart->addAxis(mAxY, Qt::AlignLeft);
        chart->addAxis(mAxX, Qt::AlignBottom);
    
        mLineSeries->attachAxis(mAxY);
        mLineSeries->attachAxis(mAxX);
    
        //隐藏背景
        chart->setBackgroundVisible(false);
        //设置外边界全部为0
        chart->setContentsMargins(0, 0, 0, 0);
        //设置内边界全部为0
        chart->setMargins(QMargins(0, 0, 0, 0));
        //设置背景区域无圆角
        chart->setBackgroundRoundness(0);
    
        //突出曲线上的点
        mLineSeries->setPointsVisible(true);
    
        //图例
        QLegend *mlegend = chart->legend();
        mLineSeries->setName("testname");
        mLineSeries->setColor(QColor(255,0,0));
        //在底部显示
        mlegend->setAlignment(Qt::AlignBottom);
        mlegend->show();
    
        // 将图表绑定到视图 wiget 为 QChartView
        ui->widget->setChart(chart);
    
        for(int i = 0 ;i < 10;i++){
            mLineSeries->append(i+1, i);
        }
    

    动态图表

    场景一

    显示最近的 n 个数据。

    思路

    对于数值坐标轴,我们仅需要在加入数据时判断数据点是否超过 x轴 最大值。
    若超过则取得旧的pointslist,并将其所有点的 x轴 数值 -1 ,再加入新点。

    效果

    在这里插入图片描述

    核心实现

        QList<QPointF> oldPoints = mLineSeries->points();
        int pointCount =oldPoints.size();
    
        if(pointCount > mAxX->max()){
    
            QList<QPointF> newPoints;
    
            for(int i = 0; i < pointCount; i++){
    
                QPointF point;
                point.setX(oldPoints.at(i).x()-1);
                point.setY(oldPoints.at(i).y());
    
                newPoints.append(point);
            }
            qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
            QPointF point;
            point.setX(oldPoints.at(pointCount -1).x());
            point.setY(qrand()%10);
            newPoints.append(point);
            mLineSeries->clear();
            mLineSeries->append(newPoints);
            mLineSeries->setPointsVisible(true);
        }
        else{
            qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
            QPointF point;
            point.setX(oldPoints.at(pointCount -1).x() +1);
            point.setY(qrand()%10);
            mLineSeries->append(point);
        }
    

    场景二

    显示最近一段时间的数据。

    思路

    这里需要增加两个概念

    • 定时间隔 TimerBreaks
    • 最大采样数 MaxSize

    首次添加时设置时间轴,每次添加数据点都先判断当前数据点是否超过最大采样数,若超过则删除线中第一个点,再添加数据。

    效果

    在这里插入图片描述

    核心实现

    // 最大采样数
    const int MaxSize = 100;
    // 定时时间间隔-ms
    const int TimerBreaks = 10;
    
    void MainWindow::slot_timeout()
    {
        static int cnt = 0;
        static QDateTime BeginTime, EndTime;
    
        if (cnt == 0)
        {
            BeginTime = QDateTime::currentDateTime();
            EndTime = BeginTime.addMSecs(MaxSize*(TimerBreaks + 1));
            mAxDateX->setMin(BeginTime);
            mAxDateX->setMax(EndTime);
        }
    
        qint64 x1 = QDateTime::currentMSecsSinceEpoch();
    
        qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
        qreal y =qrand()%10;
    
        cnt = cnt > (MaxSize - 1) ? 1 : (++cnt);
    
        if (mLineSeries->count() > (MaxSize-1))
        {
            //删除第一个元素
            mLineSeries->removePoints(0, 1);
            EndTime = QDateTime::currentDateTime();
            BeginTime = EndTime.addMSecs((qint64)MaxSize*(-1)*TimerBreaks);
    
            mAxDateX->setMin(BeginTime);
            mAxDateX->setMax(EndTime);
        }
        
        mLineSeries->append(x1, y);
    
    }
    

    交互

    获取曲线在鼠标位置坐标

    QXYSeries 中可以发现该信号:

    • void clicked(const QPointF &point)
      鼠标点击序列时,触发该信号

    • void hovered(const QPointF &point, bool state)
      鼠标在序列上时触发该信号

    有了这两个信号,就可以很容易的实现以下功能:

    在这里插入图片描述
    以上效果来自 Qt 官方例程 - Callout,核心是通过这两个信号实现控件的动态创建、隐藏和显示。

    图例控制序列隐藏/显示

    可参考官方例程 legendmarkers

    在这里插入图片描述
    以下为摘录核心:

    
    const auto markers = m_chart->legend()->markers();
    for (QLegendMarker *marker : markers) {
    // Disconnect possible existing connection to avoid multiple connections
     QObject::disconnect(marker, &QLegendMarker::clicked, this ,&MainWidget::handleMarkerClicked);
    QObject::connect(marker, &QLegendMarker::clicked, this, &MainWidget::handleMarkerClicked);
    
    //点击事件
    void MainWidget::handleMarkerClicked()
    {
        QLegendMarker* marker = qobject_cast<QLegendMarker*> (sender());
        //断言
        Q_ASSERT(marker);
        switch (marker->type())
        {
            case QLegendMarker::LegendMarkerTypeXY:
            {
            //控序列隐藏/显示
            // Toggle visibility of series
            marker->series()->setVisible(!marker->series()->isVisible());
    
            // Turn legend marker back to visible, since hiding series also hides the marker
            // and we don't want it to happen now.
            marker->setVisible(true);
            
            //修改图例
            // Dim the marker, if series is not visible
            qreal alpha = 1.0;
    
            if (!marker->series()->isVisible())
                alpha = 0.5;
    
            QColor color;
            QBrush brush = marker->labelBrush();
            color = brush.color();
            color.setAlphaF(alpha);
            brush.setColor(color);
            marker->setLabelBrush(brush);
    
            brush = marker->brush();
            color = brush.color();
            color.setAlphaF(alpha);
            brush.setColor(color);
            marker->setBrush(brush);
    
            QPen pen = marker->pen();
            color = pen.color();
            color.setAlphaF(alpha);
            pen.setColor(color);
            marker->setPen(pen);
            break;
            }
        default:
            {
            qDebug() << "Unknown marker type";
            break;
            }
        }
    }
    

    卡顿问题

    在使用图表时,经常会遇到卡顿的问题。

    目前总结的解决卡顿的方法主要有:

    • 去掉动画、样式、标签形状等
    m_chart->setAnimationOptions(QChart::NoAnimation);
    
    • 开启 OPenGL 加速
    line->setUseOpenGL();
    

    值得注意的是:

    在这里插入图片描述

    • QAreaSeries 面积和散点图无法使用。
    • 加速系列不支持系列动画。
    • 加速序列不支持点标签。
    • 对于加速系列,笔样式和标记形状被忽略。仅支持实线和普通散点。散点可以是圆形或矩形,这取决于底层图形硬件和驱动程序。
    • 极坐标图不支持加速序列。
    • 避免短时间内逐点添加,大数据刷新采用 append(const QList<QPointF> &points)
     line->append(newPoints);
    

    参考鸣谢

    Qt Charts Examples

    QChart时间坐标轴实时更新数据

    展开全文
  • Qt图表Chart绘制

    千次阅读 2018-10-11 15:29:25
    Qt图表Chart绘制 文章目录Qt图表Chart绘制功能效果图工程文件结尾 功能 读写CSV文件,加载数据和导出数据 (参考链接:多多指教) 2.支持同时加载多个图表数据 3.支持可拉伸图表比例 4.支持鼠标悬浮指定刻度...

    Qt之图表Chart绘制

    功能

    1. 读写CSV文件,加载数据和导出数据 (参考链接:多多指教
      2.支持同时加载多个图表数据
      3.支持可拉伸图表比例
      4.支持鼠标悬浮指定刻度位置,显示坐标信息
      5.支持清屏
      6.支持显示峰值坐标

    效果图

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    工程文件

    Qt交流大会 853086607 免费群中
    在这里插入图片描述

    结尾

    不定期上传新作品,解答群中作品相关问题。相关外,能解答则解答。欢迎大家一起探索Qt世界!

    展开全文
  • Qt Charts 在Qt4时代就有了,不过一直以来是商业许可的。从5.7.0开始,Qt Charts 也纳入了开放许可证。最为简洁使用Qt Chars的方法就是安装Qt5.7以后的版本。 之前的一篇文章包含了下载Qt任意版本的连接,详情请...

    Qt Charts 在Qt4时代就有了,不过一直以来是商业许可的。从5.7.0开始,Qt Charts 也纳入了开放许可证。最为简洁使用Qt Chars的方法就是安装Qt5.7以后的版本。

    之前的一篇文章包含了下载Qt任意版本的连接,详情请参考https://www.jianshu.com/p/f19a546227ff

    安装好Qt以后,进行一下操作:‘

    1新建一个项目,在界面上放置一个Widget,使用一个Widget作为Chart的载体

     

    2右键点击这个widget,把这个Widget提升。

     

    3提升的类名为QChartView,头文件也为QChartView 

     

    4对pro文件进行设置

     

    添加           QT += charts           

     

    5针对所调用QCharts的文件

    在对应头文件中添加       using namespace QtCharts;

                                            #include      <QChartView>

                                            #include       <QLineSeries>

                                            #include        <QPieSeries>

     

    6在构造函数里添加:

    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->defectWaveform->setChart(c);

    7至此配置与编写完成,运行程序应该能得到如下界面:



    作者:来套煎饼果子
    链接:https://www.jianshu.com/p/4eb786d0feae
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 基于Qt绘制科学图表 -- Qwt试用

    千次阅读 2012-09-15 14:59:24
    基于Qt绘制科学图表 -- Qwt试用   Qwt是一个基于LGPL版权协议的开源项目, 其目标是提供一组2D的窗体库显示技术领域的数据, 数据源以浮点数组或范围的方式提供, 输出方式可以是Curves(曲线),Slider...
  • 自从开发由c#转入Qt后一直寻找一款Qt下的图形控件库,最后ChartDirector控件映入眼球。ChartDirector控件使用方便,快捷,灵活,功能强大,交互性强。在web服务器以及嵌入式应用程序开发中,它是一种非常理想的工具...
  • qt图表绘制

    2021-04-20 09:43:09
    Qt Charts模块是一组易于使用的图表组件,它基于Qt的Graphics View架构,其核心组件是QChartView和QChart。 QChart QChart类管理图表系列、图例和轴的图形表示,而一个QChart一般包括序列、坐标轴、图例、图表标题...
  • QT图表绘制

    2015-12-13 15:11:00
    1)方法1:然进入到其子目录sharedlib-compilation,找到.pro工程文件,用QtCreator打开编译即可,会生成debug和release两个文件夹,里面有对应版本的动态库。 2)方法2:对于我这种不用QtCreator编辑器的,就要在...
  • 建立并初始化时间轴图表后,设置几个点但是未能在表中绘制出来。 代码 splineSeries = new QSplineSeries(this); splineSeries->setName("spline"); QPen red(Qt::red); red.setWidth(3); splineSeries->...
  • 基于Qt绘制科学图表--Qwt的使用

    千次阅读 2012-04-01 17:10:35
    篇一   Qwt是一个基于LGPL版权协议的开源项目, 其目标是提供一组2D的窗体库显示技术领域的数据, 数据... 该工具库基于Qt开发, 所以也继承了Qt的跨平台特性, 据原作者文档所说, 该项目在Qt-win/Qt-x11/Qt-embed
  • 学习qt图表绘制(一)

    千次阅读 2016-08-14 21:59:06
    1.在pro文件中添加charts QT += charts 2.在主程序中增加对作用域的声明,否则出错“未声明的标识符” QT_CHARTS_USE_NAMESPACE 等同于 using namespace QtCharts ...3.QChart类是QGraphicsWidget的... //定义图表
  • 学习qt图表绘制(二)

    千次阅读 2016-08-15 22:52:55
    QAreaSeries类:构建区域图表.区域的定义依赖于QLineSeries,QAreaSeries的构造函数需要两个QLineSeries作为参数. 1.创建2个QLineSeries对象;1个作为区域的上边沿,1个作为区域的下边沿. QLineSeries* series_...
  • PlotJuggler - 用于绘制图表的开源Qt5应用程序(基于Qwt)
  • 学习qt图表绘制(三)

    千次阅读 2016-08-17 20:54:54
    QValueAxis类:操作坐标轴. 建议使用: chart->createDefaultAxes(); chart->axisX()->setRange(0, 20); chart->axisY()->setRange(0, 10); 若使用: QValueAxis *axisX = new QValueAxis; ax

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,864
精华内容 1,145
关键字:

qt绘制图表