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();
}
浙公网安备 33010602011771号