步骤:
- 安装
- 对pro文件进行设置,里面加上一行:QT += charts
- 引用:
#include <QtCharts> using namespace QtCharts;
- 编译后,在ui文件中引用:
#include <QtCharts> QT_CHARTS_USE_NAMESPACE
- 新建一个widget并提升为chartView
- 代码:给他一个sequerence
- 代码:设置坐标轴,隐藏图例,设置标题
- 代码:随着数据的更新,更新坐标轴设置
我安装QT的时候选择了Qt chart组件,就不用再安装啦。
设置pro文件
里面加上一行:QT += charts
include
在用到的地方(mainwindow.h)加上
#include <QtCharts>
using namespace QtCharts;
在编译生成的文件里加上include
先编译,会报错如下:
此时,双击这一行,会进入“ui_mainwindow.h”
里面加上这两行:
#include <QtCharts>
QT_CHARTS_USE_NAMESPACE
新建一个widget并提升为QChartView
弄一个container里面的widget进去,调整大小。
右键,提升为:
输入提升的类名称如下图:
代码:
mainwindow.h里面加三个全局变量:
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
QChart* chart ;
QLineSeries *series;
quint32 counter;
mainwindow.cpp里面:
chart = new QChart();
series = new QLineSeries();
counter = 0;
for (counter = 0; counter < 100; counter++) {
series->append(counter, sin(0.6f*counter));
}
chart->addSeries(series);
chart->createDefaultAxes(); // (没有这个就不显示)基于已添加到图表的 series 来创建默认的坐标轴
chart->setTitle("my chart");
chart->legend()->hide(); //不然会有个点儿
ui->my_chart->setChart(chart);
ui->my_chart->resize(900,400);
this->resize(1200,600);
更新数据
更新数据的步骤:
- 直接更新sequrence
- 相应的修改坐标轴范围
比如用一个按钮,点击更新:
void MainWindow::on_pushButton_clicked()
{
printf("click");
qDebug("q: click" );
int count = series->points().size();
counter +=1;
// if (count >100)
// {
// series->remove(0);
// }
double lastX = series->at(series->points().size()-1).x();
double lastY = series->at(series->points().size()-1).y();
series->append(counter, lastY+1);
qDebug("%d",series->points().size());
chart->axisX()->setMax(counter);
chart->axisY()->setMax(lastY+1);
//ui->my_chart->resize(900+10*counter,400);
// chart->update();
// ui->my_chart->setChart(chart);
}