Qt绘制波形图(QChart,附详细注释)

本文详细介绍了如何在Qt中通过QChart和相关类如QDateTimeAxis、QValueAxis和QSplineSeries创建并设置波形图,以展示时间与温度的变化情况,包括坐标轴命名、范围、格式和曲线数据的添加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天分享一下利用QChart绘制波形图及坐标和曲线的基本设置。以时间和温度变化为例。直接上代码

1.Pro文件加入charts资源

QT += charts

2.创建变量(.h文件如下)

//加入头文件
#include <QChartView>
#include <QtCharts>
#include <QChart>
//创建变量
private:
    QChart *m_Chart;//创建画布
    QDateTimeAxis *m_axisX;//横坐标(时间)
    QValueAxis *m_axisY;//纵坐标(温度)
    QSplineSeries *m_chLoadSerise;//温度曲线

3.具体实现 (.cpp文件如下)

void createChart()
{
    //创建对象
    m_Chart = new QChart;
    m_chLoadSerise= new QSplineSeries;
    m_chLoadSerise->clear();
    m_axisX = new QDateTimeAxis;
    m_axisY = new QValueAxis;
    //坐标、波形属性设置
    QDateTime timeStart=QDateTime::currentDateTime();
    QDateTime timeEnd=timeStart.addSecs(1800);
    m_Chart->setTitle("温度变化曲线");//坐标系名称
    m_axisX->setTitleText("时间");//横坐标名称
    m_axisX->setTitleBrush(Qt::white);//横坐标名称字体颜色
    m_axisX->setFormat("hh:mm:ss");//横坐标时间格式
    m_axisX->setRange(timeStart, timeEnd);//设置横坐标时间范围
    m_axisX->setTickCount(10);//设置横坐标格数(间隔)
    m_axisY->setTitleText("温度(℃)");//纵坐标名称
    m_axisY->setTitleBrush(Qt::white);//纵坐标名称字体颜色
    m_axisY->setLabelFormat("%.1f");//纵坐标温度小数位数
    m_axisY->setRange(0,25);//纵坐标范围
    m_axisY->setTickCount(10);//设置纵坐标格数(间隔)
    m_chLoadSerise->setName("温度值");//曲线名称
    m_Chart->addSeries(m_chLoadSerise);//曲线加入到坐标
    m_Chart->setAxisX(m_axisX, m_chLoadSerise);//横坐标加入曲线
    m_Chart->setAxisY(m_axisY, m_chLoadSerise);//纵坐标加入曲线
    //m_Chart->setTheme(QChart::ChartThemeDark);//设置坐标背景颜色
    m_Chart->setBackgroundVisible(false);//设置坐标系背景透明透明
    m_Chart->legend()->setVisible(true);//曲线图例显示
    m_Chart->legend()->setAlignment(Qt::AlignBottom);//图例位置
    m_Chart->legend()->setLabelColor(Qt::white);//图例颜色
    m_Chart->setTitleBrush(Qt::white);//坐标系名称颜色
    m_Chart->axisX()->setLabelsColor(Qt::white);//横坐标刻度颜色
    m_Chart->axisY()->setLabelsColor(Qt::white);//纵坐标刻度颜色
    ui->widget_chartView->setChart(m_Chart);//画布加入到widget控件中(注:在ui界面需将widget提升控件为QChartView)
    ui->widget_chartView->setRenderHint(QPainter::Antialiasing);//防止图形走样
    //曲线中加入坐标值
    m_chLoadSerise->append(timeStart.toMSecsSinceEpoch(),5);
    m_chLoadSerise->append(timeStart.addSecs(200).toMSecsSinceEpoch(),5.5);
    m_chLoadSerise->append(timeStart.addSecs(500).toMSecsSinceEpoch(),5.6);
    m_chLoadSerise->append(timeStart.addSecs(800).toMSecsSinceEpoch(),5.8);
    m_chLoadSerise->append(timeStart.addSecs(1200).toMSecsSinceEpoch(),6);
    m_chLoadSerise->append(timeStart.addSecs(1500).toMSecsSinceEpoch(),7);
    m_chLoadSerise->append(timeStart.addSecs(1700).toMSecsSinceEpoch(),12);
}

4.效果图如下

         注:widget背景颜色我设置成黑色了,所以坐标颜色设置成白色便于观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值