GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据

GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据

使用环境:

ubantu16
QT5.7
开发板GEC6818
实现要求:
利用A53按键1、按键2与温湿度传感器完成QT界面动态显示温湿度记录,并指定温湿度记录超过指定范围,进行报警(LED,BEEP),按下key1时,允许进行采集;当key2按下,关闭数据采集。
添加:
1.通过按键3,4可以手动打开关闭蜂鸣器与LED。
2.除开第一个界面的实时数据显示以外还有第二界面可进行切换,第二界面显示最近20条,采集的数据。
效果演示视频:基于GEC6818的QT开发之——通过按键控制DHT11模块的数据采集与动态显示

文章目录

  • GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据
    • 一、两个界面的切换
      • 1.1 创建两个UI
      • 1.2 两个UI界面的布局
      • 1.3 界面跳转代码
    • 二、第二个界面以表格形式显示数据
      • 2.1 添加TableWidget的控件
      • 2.2 设计表格
        • 2.2.1 设置表格的行数与列数
        • 2.2.2 设置表头
        • 2.2.3 创建临时数组存储采集数据

一、两个界面的切换

1.1 创建两个UI

首先需要创建两个ui,如下图,【右击】–>【添加新文件】
在这里插入图片描述

然后创建QT设计师界面类
在这里插入图片描述

这里选择第二个UI的类型:
在这里插入图片描述

可以根据自己的需要进行选择。
在这里插入图片描述

最后就是新建UI绑定的类名的重命名。
然后点击下一步就可以创建成功。

在这里插入图片描述

1.2 两个UI界面的布局

要在两个UI界面进行跳转,那么我们就需要设置一个进行跳转的触发条件。可以是设计一个按钮进行点击跳转,那么创建的UI界面就是:

dht11_key.ui

在这里插入图片描述

form.ui
在这里插入图片描述

1.3 界面跳转代码

过按钮的槽函数进行dht11_key.ui的界面跳转到form.ui界面的跳转。

首先需要在第一个界面中创建第二个界面这个对象

在这里插入图片描述

Form *window=NULL;// the sec window

然后我们创建一个按钮的槽:可以是创建一个单击跳转的槽函数。
在这里插入图片描述

void DHT11_KEY::on_window2Button_clicked()
{this->hide();//隐藏第一个界面(这里并不是销毁)window->show();//显示第二个界面
}

经过上面的步骤,我们已经能从界面1转到界面2。当然如果我们想从界面2转到界面1,用这个方法依然可以,但是我们还可以用信号与槽的方式让这个方式更简便

在界面2的头文件里面添加一个返回信号。

在这里插入图片描述

让界面2的按钮在点击时发送这个信号。
所以在界面2的按钮槽函数实现
在这里插入图片描述

void Form::on_pushButton_clicked()
{emit goback();
}

这样当我们在界面2时,只要点击按钮,就会发送一个返回的信号,这个时候,只要我们的界面1能接收到这个信号,那我们便能实现从界面2转到界面1的行为.
在这里插入图片描述

this->window = new Form;connect(window,&Form::goback,this,[=](){window->close();this->show();});

当然上面的槽函数也可以单独分离出来,实际情况根据需要进行修改即可。

二、第二个界面以表格形式显示数据

2.1 添加TableWidget的控件

首先我们需要在第二个界面添加一个TableWidget的控件,
关于这个控件的相关类,大家可以参考常见界面设计组件————QTableWidget的使用

在这里插入图片描述

2.2 设计表格

2.2.1 设置表格的行数与列数
// 设置表格的行数和列数ui->tableWidget->setRowCount(20); // 设置为20 行ui->tableWidget->setColumnCount(2);
2.2.2 设置表头
// 设置表头QStringList headers;headers << "Temperature" << "Humidity"; // 表头标签ui->tableWidget->setHorizontalHeaderLabels(headers); // 设置水平表头
  1. QStringList headers;:首先,创建了一个名为headers的QStringList对象。QStringList是Qt框架中用于存储字符串列表的类。

  2. headers << "Temperature" << "Humidity";:使用QStringList的<<运算符向列表中添加了两个字符串,分别是"Temperature"和"Humidity"。这些字符串将作为表格的水平表头标签。

  3. ui->tableWidget->setHorizontalHeaderLabels(headers);:通过调用setHorizontalHeaderLabels方法,将headers中的字符串列表设置为表格的水平表头标签。这会使表格的第一列标题为"Temperature",第二列标题为"Humidity"。
    另外,你还可以根据需要自定义表头的样式,包括字体、颜色、对齐方式等。这些都可以通过Qt的相关方法来实现。

2.2.3 创建临时数组存储采集数据

因为需要显示最近20条采集的温湿度数据,所以我们新建一个临时数组进行存储,当然可以大于20条,只要在前面将表格的行数与列数进行更改就可以扩大缩小需要显示的范围。


static int data[20][2]={0};//存储最近20条数据的数组data[i][0]=get_data[0];//DHT11采集到的数据,这里可以更换为自己的需要展示的数组data[i][1]=get_data[1];
// 依次更新每一行的数据for (int j = 0; j <=i; ++j){//dht11_get_data();// 创建表格项QTableWidgetItem *item1 = new QTableWidgetItem(QString::number(data[j][0])); // 第一列数据QTableWidgetItem *item2 = new QTableWidgetItem(QString::number(data[j][1])); // 第二列数据// 将表格项添加到表格中ui->tableWidget->setItem(j, 0, item1);ui->tableWidget->setItem(j, 1, item2);// 每次更新完一行后,将表格滚动到最后一行ui->tableWidget->scrollToBottom();}if(i>20)//为了进行循环,所以到达表格上限时需要清零,这样的清零不会将以前的数据全部删除,而是进行覆盖。{i=0;}else{i++;//没有超过范围就++;}

本文中涉及的工程代码在我的github中可以进行下载04-DHT11_twoUI(第四次提交)

效果演示视频:基于GEC6818的QT开发之——通过按键控制DHT11模块的数据采集与动态显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/282824.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业网络基础设施物理安全面临全新挑战

企业网络基础设施的物理安全是确保业务连续性和数据完整性的关键组成部分。随着技术的发展和环境的变化&#xff0c;这些基础设施面临着新的挑战。以下是一些主要的挑战和的解决方案 一、机房、仓库、档案馆物理安全事件频发的挑战&#xff1a; 1.电力安全事件&#xff1a;市…

HTML5+CSS3+JS小实例:创意罗盘时钟

实例:创意罗盘时钟 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=…

优惠:阿里云4核16G服务器优惠价格26.52元1个月、149.00元半年

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年&#xff0c;配置为阿里云服务器ECS经济型e实例ecs.e-c1m4.xlarge&#xff0c;4核16G、按固定带宽 10Mbs、100GB ESSD Entry系统盘&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接打开如下图&a…

网络安全实训Day5

写在前面 昨天忘更新了......讲的内容不多&#xff0c;就一个NAT。 之前记的NAT的内容&#xff1a;blog.csdn.net/Yisitelz/article/details/131840119 网络安全实训-网络工程 NAT 公网地址与私网地址 公网地址 可以在互联网上被寻址&#xff0c;由运营商统一分配全球唯一的I…

苹果手机更换国内IP地址的方法

在网络世界中&#xff0c;IP地址扮演着极为重要的角色&#xff0c;是互联网通信的基础。很多人在使用苹果手机时&#xff0c;有时候需要更换国内IP地址以获取更多网络资源或保护隐私。那么&#xff0c;是否可以更换国内ip地址&#xff1f;苹果手机更换国内ip地址的方法是怎样的…

阿兹特克帝国社会结构和政治农业和经济宗教和文化西班牙征服和遗产特诺奇提特兰(Tenochtitlán)地理位置和建筑社会和经济水上花园和农业西班牙征服巴斯克人

目录 阿兹特克帝国 社会结构和政治 农业和经济 宗教和文化 西班牙征服和遗产 特诺奇提特兰&#xff08;Tenochtitln&#xff09; 地理位置和建筑 社会和经济 水上花园和农业 西班牙征服 巴斯克人 语言 历史 文化和社会 政治和自治 1. 新南威尔士大学最新资讯 …

vue学习日记14:工程化开发脚手架Vue CLI

一、概念 二、安装 1.全局安装&查看版本 注意启动cmd输入命令 要以管理员运行哦 安装了一次就行以后不用再创建了 yarn global addvue/cli vue --version 显示了版本号即可 2.创建项目架子 创建项目的路径在哪 项目就在哪 项目名字不能用中文 vue create project-n…

Legacy|电脑Windows系统如何迁移到新安装的硬盘?系统迁移详细教程!

前言 前面讲了很多很多关于安装系统、重装系统的教程。但唯独没有讲到电脑换了新的硬盘之后&#xff0c;怎么把旧系统迁移到新的硬盘上。 今天小白就来跟各位小伙伴详细唠唠&#xff1a; 开始之前需要把系统迁移的条件准备好&#xff0c;意思就是在WinPE系统下&#xff0c;可…

子组件自定义事件$emit实现新页面弹窗关闭之后父界面刷新

文章目录 需求弹窗关闭之后父界面刷新展示最新数据 实现方案AVUE 大文本默认展开slotVUE 自定义事件实现 父界面刷新那么如何用呢? 思路核心代码1. 事件定义2. 帕斯卡命名组件且在父组件中引入以及注册3. 子组件被引用与父事件监听4.父组件回调函数 5.按钮弹窗事件 需求 弹窗…

大屏动效合集更更更之实现百分比环形

实现效果 参考链接&#xff1a; https://pslkzs.com/demo/pie/demo1.php 写在最后&#x1f352; 源码&#xff0c;关注&#x1f365;苏苏的bug&#xff0c;&#x1f361;苏苏的github&#xff0c;&#x1f36a;苏苏的码云

贪心算法(算法竞赛、蓝桥杯)--奶牛晒衣服

1、B站视频链接&#xff1a;A28 贪心算法 P1843 奶牛晒衣服_哔哩哔哩_bilibili 题目链接&#xff1a;奶牛晒衣服 - 洛谷 #include <bits/stdc.h> using namespace std; priority_queue<int> q;//用大根堆维护湿度的最大值 int n,a,b; int tim,maxn;int main(){s…

代码随想录算法训练营第day54|392.判断子序列 、 115.不同的子序列

目录 392.判断子序列 115.不同的子序列 392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字…

Vue2(三):绑定样式、条件渲染(v-if,v-show)、列表渲染(v-for)、key的原理、列表过滤、列表排序

一、绑定样式 1.绑定class样式 (1)字符串写法 适用于&#xff1a;样式类名不确定&#xff0c;需要动态获取。 <div id"root"><div class"basic" :class"mood" click"changeMood">test</div><!-- class是原本的…

Linux(openEuler)部署SpringBoot前后端分离项目(Nginx负载均衡)

假如数据库在本地&#xff0c;没有放在Linux中 1.先把数据库中root的主机改成% 2.项目中的数据库链接配置换成本机ip 3.打包 4.把打包好的jar包放到Linux中 一般把jar包放到opt下 5.把前端部分拷贝到Linux的nginx中 5.1在package.json中修改build的值为图中这样 5.2同时由于在…

学点儿Java_Day9_多图带你搞懂Java访问修饰符

1 前言 在学习Java访问修饰符的作用及相应的效果时&#xff0c;看到了像下面这样的图 表达的内容基本都是一致的&#xff0c;但是带着一些疑惑经过一番“深入”学习后&#xff0c;我觉得这样划分不够细致&#xff0c;把我的总结分享一下。 2 多图带你搞懂Java访问修饰符 …

基于springboot的班级综合测评管理系统的设计与实现

目录 背景 技术简介 系统简介 界面预览 背景 随着电子技术的广泛渗透和迅猛发展&#xff0c;网络化的管理平台得到了大规模的应用。众多的公共机构和商业组织都在积极推进管理流程的电子化转型&#xff0c;班级的综合评价管理系统亦是如此&#xff0c;从传统的手工操作转变…

Vue3 Vite3 状态管理 pinia 基本使用、持久化、在路由守卫中的使用

参考https://juejin.cn/post/7152774411571953677&#xff0c;自己简洁化了一部分 1.安装pinia依赖 yarn add pinia 创建pini实例 根目录创建store文件夹&#xff0c;然后创建index.js import { createPinia } from piniaconst pinia createPinia()export default pinia …

物联网和工业物联网的区别——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网&#xff08;IoT&#xff09;和工业物联网&#xff08;IIoT&#xff09;作为现代科技的重要分支&#xff0c;正在逐渐渗透到我们的日常生活和工业生产中。它们的应用范围广泛&#xff0c;涵盖了从智能家居到自动化工厂的多个领域。…

存内领域前沿,基于忆阻器的存内计算----浅析忆阻存内计算

目录 一.概念浅析 1.存内计算 2.忆阻器 3.基于忆阻器的存内计算 二.忆阻器的分类 1.磁效应忆阻器 2 .相变效应忆阻器 3 .阻变效应忆阻器 三.基于忆阻器的存内计算原理 1. 利用二值忆阻器的布尔计算 3.1R-R 逻辑运算 3.2V-R 逻辑运算 3.3V-V 逻辑运算 2. 利用模拟…

Harbor高可用(nginx和keepalived)

Harbor高可用&#xff08;nginx和keepalived&#xff09; 文章目录 Harbor高可用&#xff08;nginx和keepalived&#xff09;1.Harbor高可用集群部署架构1.1 主机初始化1.1.1 设置网卡名和ip地址1.1.2 设置主机名1.1.3 配置镜像源1.1.4 关闭防火墙1.1.5 禁用SELinux1.1.6 设置时…