QChart使用

记得在.pro文件中添加Qt+=charts
下面实现了每0.5s就添加一个坐标
头文件

点击查看代码
#include <QMainWindow>
#include<QThread>
#include<QtConcurrent/QtConcurrent>
#include<QChart>
#include<QLineSeries>
#include<QChartView>
#include<QValueAxis>
#include<QMutex>
#include<QTimer>
#include"worker.h"
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    Worker*worker;

    QLineSeries*m_series;//图表的曲线
    QChart *m_chart;//图表
    QChartView*m_chartView;//承载图表的画布
    QTimer*m_timer;
    int a=0;
    int b=0;
};
下面是源文件的具体实现
点击查看代码
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->m_timer=new QTimer();
    this->m_timer->setInterval(500);

    this->m_series=new QLineSeries();
    this->m_series->setName("数据曲线");

    this->m_chart=new QChart();
    this->m_chart->addSeries(this->m_series);
    this->m_chart->setTitle("数据测试图表");
    //this->m_chart->createDefaultAxes(); // 自动创建坐标轴

    //手动设置X,Y轴
    QValueAxis*axisX=new QValueAxis();
    QValueAxis*axisY=new QValueAxis();
    axisX->setTitleText("X轴");
    axisY->setTitleText("Y轴");
    axisX->setMin(0);               // 最小值
    axisX->setMax(5);               // 最大值
    axisY->setMin(0);
    axisY->setMax(10);
    axisX->setTickCount(6);         // 刻度数量
    //设置到chart中
    this->m_chart->setAxisX(axisX,this->m_series);
    this->m_chart->setAxisY(axisY,this->m_series);

    this->m_chartView=new QChartView(this->m_chart);//创建背景画布
    this->m_chartView->setRenderHint(QPainter::Antialiasing);//平滑曲线
    setCentralWidget(this->m_chartView);//将画布设置在中间
    this->resize(800,500);
    connect(this->m_timer,&QTimer::timeout,[this]{
        if(a>5&&b>5)
            return;
        this->m_series->append(a,b);
        qDebug()<<"a"<<a<<" b"<<b;
        a++;
        b++;
    });
    this->m_timer->start();
}

posted on 2026-06-11 15:05  dd_l  阅读(1)  评论(0)    收藏  举报