目录
1.项目说明
此次项目为通过51单片机将温湿度数据通过串口发送给QT,QT做界面并显示。要求实时显示,并且QT设置两个界面,第一个界面显示整体数据,方便以后扩展多个数据内容,在每个数据后面添加一个”详情“按键,点击按键可以跳转到第二个界面,第二个界面为这个采集数据的详细信息,可以增加图表显示。
扩展内容:1.显示整数和小数。
2.通过ESP8266wifi模块代替串口发送数据。
版本和器件说明:
单片机:STC89C52RC
QT:5.14.2
2.上位机QT绘制
2.1建立工程
点击文件->新建工程->模板选择QT Widgets Application->类信息选择main window(main window与Qwidget区别是有下拉菜单选项)
然后进入工程,点击左侧项目,会自动配置工程所需文件。
此时项目里面就有了所需的工程文件,准备工作就绪,下面就是编写程序。
2.2绘制ui
将各个器件拖进界面。
2.3编程
2.3.1 头文件
mainwindow.h 类中增加声明。
2.3.2 CPP文件
mainwindow.cpp中进行实现。
主要有四步:初始化参数->控件编辑->完成信号与槽的连接->实现槽函数
2.3.3 运行测试
右键点击工程,选择运行。
测试如下:
通过验证,功能正常。
2.4进阶--实现两个界面切换
原理:通常只有一个界面的时候,在main函数中,构造函数后,让界面一直显示。
两个界面时,当第一个界面中按下要跳转到第二个界面的按键时,系统让第一个界面隐藏(不是退出),然后打开第二个界面。所以需要在第一个界面的构造函数中增加第二个界面构造函数的地址,实现调用。
当第二个界面要回到第一个界面时,需要通过信号的方式,通过发送信号给第一个界面,然后第二个界面隐藏,第一个界面显示。
2.4.1绘制ui
绘制第二个界面的ui。
选择mainwindows
绘制UI,添加一个按键,用来回到上一页。
2.4.2编程
首先在第一个ui类里面增加一个ui类指针,并且再构造函数中创建第二个ui类。
然后对按键建立槽函数,第一个ui的详情按键建立槽函数,功能是按下时隐藏第一个界面,打开第二个ui。
void MainWindow::on_detailpushButton_clicked()
{
this->hide();
this->ppage2->show();
}
connect(ui->detailpushButton,&QPushButton::clicked,[=](){
MainWindow::on_detailpushButton_clicked();
}); //点击按键跳转第二个界面
运行测试,可以正常跳转。
下面是从第二个界面跳转会第一个界面。
思路是第二个界面通过按键绑定一个信号,按下按键发送信号。第一个界面由于包含第二个界面的类地址,所以可以直接访问信号,访问到信号时隐藏第二个界面,显示第一个界面。
void MainWindowpage2::on_backpushButton_clicked()
{
//发信号
emit this->back();
}
connect(this->ppage2,&MainWindowpage2::back,[=](){
this->ppage2->hide();
this->show();
}); //接收第二个界面回退的信号
测试后成功切换到第一个界面。
2.4.3完善第二个界面
同第一个界面一样,就是读取信息,做图表显示。
3.单片机数据发送
单片机采集数据并通过串口发送数据即可。