1.前言
最近想把之前学过的东西都记录一次,感觉都忘了,去找文件也不知道去哪了,感觉很乱,就写一些记录吧,现在看之前自己写的文章都有点云里雾里的了,现在开始写详细一点,以便之后方便自己理解和查阅。
2. QChart类的使用
先看代码,感觉把注释写上比较好理解
void MainWindow::wave()
{
//定义一个QString类型的变量str,用来保存ui界面中名为lineEdit的文本,也就是获取文本框的内容
QString str = ui->lineEdit->text();
//将字符串格式的内容转化为Double型的,vector容器里应该只能存放数字类型的。
double num = str.toDouble();
//这里就开始创建一个QChart类的对象,创建的格式就是这样,俗称new一个对象。
//这里加new和不加new的区别之后再深究,目前入门阶段,暂时不想知道,这里的QChart是一个类
//所以结合c++/c的语法可知,这里就是实例化了一个QChart*类型的指针变量,通过这个变量之后就可以调用QChart里的成员。
QChart *chart = new QChart();
//实例化QLineSeries类,用于构成线
QLineSeries *LineSeries = new QLineSeries();
//用创建号的vector容器存放num,这个vector之前在头文件里已经实例化过了
//格式为:QVector<int> vector;现在忘了这样实例化和QChart *vector = new Qvector();的区别了
//应该都一样的。vector里面的相关成员可以百度哦。
vector.push_back(num);
for(int k = 0; k<vector.length();k++)
{
//将vector里的数据利用QPointF()都存放到之前创建的LinSeries里面。
//这里的感觉就是通过点组成线,因为LineSeries是指针变量,所以存放数据时
//应该用*LineSeries,而不是用*LineSeries哦,这里不懂可以补一下c语言的知识。
*LineSeries<<QPointF(k,vector[k]);
}
//打印vector的长度,注意是qDebug(),而不是qDebug
qDebug()<<"vector的长度"<<vector.length();
qDebug()<<"num = "<<num;
//创建x,y轴对象
QValueAxis *xAxis = new QValueAxis();
QValueAxis *yAxis = new QValueAxis();
//调用x轴的成员设置x轴的刻度属性
xAxis->setTickCount(vector.length());
//利用chart里的成员将线LineSeries放入chart里面
chart->addSeries(LineSeries);
//将坐标轴添加到chart里,并指定坐标轴的方向
chart->addAxis(xAxis,Qt::AlignBottom);
chart->addAxis(yAxis,Qt::AlignLeft);
//当然了,这里需要将创建的x,y轴都与线联系起来,感觉这里的逻辑有点复杂,可以这么理解:
//先是把点(vector里的数据)放到线上(LineSeries),再把线与坐标轴联系起来(此处的语句,attachAxis)
//再将线与chart(画板)联系(addSeries),最后在画板上添加轴,感觉后面几个的顺序可以交换一下。
LineSeries->attachAxis(xAxis);
LineSeries->attachAxis(yAxis);
//好像使用这个也行,在chart上使用默认的轴
//chart->createDefaultAxes();
//将chart添加到graphicsView上
ui->graphicsView->setChart(chart);
//清除文本内的数据
ui->lineEdit->clear();
}
显示的效果:
这样感觉就可以实时显示和接收硬件上传感器传过来的数据了,当然这个只是单纯可以显示,很多功能不全,后续再看能不能搞一下完整的。
这个程序是需要点一下按钮才能进行数据显示的,所以需要一个connect来搞定。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//这里利用槽函数,对按键的功能进行设置,一个位置是按键的名字,第二个位置是按键的类,不知道为啥要弄一个取址符号
//第三个是this,有点懵,第四个就调用函数wave
connect(ui->pushButton,&QPushButton::clicked,this,&MainWindow::wave);
}
最后,最重要的是,在使用类时马,要添加该类的头文件,这个是常识哦,还有就使用在用槽函数时,需要在头文件定义槽函数,比如这样。
private slots:
void wave();
主要头文件:文章来源:https://www.toymoban.com/news/detail-531395.html
#include <QVector>
#include <QtCharts>
#include <QDebug>
此外,还需要在.pro文件添加这个
额…还要就是ui界面的graphicsView也有讲究,需要修改一下
可以看到这两个类不一样,需要将graphicsView的类提升为QtCharts::QChartView。
这样就可以正常显示了。文章来源地址https://www.toymoban.com/news/detail-531395.html
到了这里,关于QT之数据显示(QChart类)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!