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.mzph.cn/news/755488.shtml

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

相关文章

天锐绿盾|公司开发部门源代码泄露防护系统,无感透明加密软件

#代码加密、代码防泄密、开发部门源码防泄漏、源代码透明加密、办公透明加密系统# 天锐绿盾作为一款针对企业数据安全的专业软件&#xff0c;特别是在防止公司开发部门源代码泄露方面&#xff0c;提供了智能无感透明加密保护系统。 德人合科技 | 天锐绿盾 PC地址&#xff1a; …

Wifi环境下Unity开发iOS应用启动后HTTPS请求未弹出是否允许无线数据使用数据的弹窗

情况说明 笔者项目在首次启动&#xff0c;登录界面点击登录按钮会先HTTPS请求创建帐号&#xff0c;但是在WIFI网络下&#xff0c;请求后一直提示网络连接失败。但是切换到流量包后&#xff0c;则会弹出"无线数据"使用数据的弹窗&#xff0c;选择允许后则可顺利进入。…

MyBatis面试系列-02

1. Mybatis 中如何解决实体类属性名和表字段名不一致问题? 方式一:通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。 <select id="selectOrder" parametertype="int" resultetype="com.jingxuan.Order">…

蓝桥杯算法基础(25)边长为1的最大子方阵优化

题4:边长为1的最大子方阵优化预处理 对每个位置上为1的元素找右边下边有多少个1 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 13,3 2,4 1,0 0,0 2,2 1,3 0,0 1,3 2,1 1,2 0,0 1,2 0,0 3,1 2,1 1,1 (右&#xff0c;下)//算上自身[3],[3] 2,[4] [2], 2 1, 3 只需要看这四个数就可以确定一个正…

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体 最近看到有一款Wubuntu的文章&#xff0c;对于习惯使用windows操作系统&#xff0c;又不熟悉ubuntu系统的程序员小白来说&#xff0c;可以说是福音了。目前的Wubuntu兼容性可能还有一点问题&#xff0c;如果再迭代几次的…

Python库Gym:打开机器学习与强化学习的大门

Python库Gym&#xff1a;打开机器学习与强化学习的大门 强化学习作为人工智能领域的重要分支&#xff0c;已经在各种领域展现出了巨大的潜力。为了帮助开发者更好地理解和应用强化学习算法&#xff0c;Python库Gym应运而生。Gym提供了一个开放且易于使用的环境&#xff0c;供开…

阅读基础知识2

26 Linux中开放某个端口 在Linux中开放某个端口&#xff0c;通常需要配置防火墙规则来允许通过指定的端口号的网络流量。这里提供两种常用的防火墙管理工具的命令&#xff1a; 使用iptables&#xff08;内核空间防火墙&#xff09; 临时打开端口&#xff08;重启后失效&#xf…

win电脑安装绿色版MySQL8

一、下载压缩包 下载mysql server的zip文件&#xff0c;地址&#xff1a;Windows (x86, 64-bit), ZIP Archive 解压后&#xff1a; 二、创建配置文件&#xff08;可忽略&#xff09; 配置文件可存放位置及名称&#xff1a; C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini…

招个Java工程师,却发现了一个宝藏平台

一直关注磊哥的朋友都知道&#xff0c;磊哥出来创业&#xff08;做 Java 就业指导&#xff09;也快一年了&#xff0c;从最初的纠结彷徨、不知所措&#xff0c;到现在逐渐找到自己的节奏&#xff0c;也算是半个媳妇熬成婆了。 磊哥现在每天做的事儿&#xff0c;就是通过文章和…

使用Navicat远程连接Linux中的MySQL

一、登录MySQL数据库 mysql -uroot -pXjm123456 二、使用mysql数据库 use mysql&#xff1b; 三、查询user表中包含host的字段 select user,host from user;### 该字段中&#xff0c;localhost表示只允许本机访问&#xff0c;可以将‘localhost’改为‘%’&#xff0c;‘%’表…

8.发布页面

发布页面 官网 https://vkuviewdoc.fsq.pub/components/form.html 复制官网中的内容 代码 write.vue <template><view class"u-wrap u-p-l-20 u-p-r-20"><u-form :model"addModel" ref"form1"><u-form-item label&quo…

深度强化学习06Actor-Critic

Critic裁判 裁判打分 提高自己的技术 提高打分水平

编译原理-实现识别标识符的词法分析器——沐雨先生

实验任务&#xff1a; 实现识别标识符的词法分析器 实验要求&#xff1a; 根据编译原理理论课教材中图2.3“标识符的转换图”&#xff0c;用C语言编写识别标识符的词法分析器&#xff0c;以文本文件为输入&#xff0c;控制台&#xff08;或文件&#xff09;输出识别出的每个…

uni app 打肉肉(打飞机)小游戏

都给老婆和孩子写了 合十 钓鱼了&#xff0c;给自己写个打飞机吧。没找飞机怪兽的图片。就用馒头和肉肉代替了。有问题不要私信我。自己改哈 <template><view class"page_main"><view class"contentone"><canvas class"canvas…

C语言每日一题(64)快乐数

题目链接 力扣网202 快乐数 题目描述 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不…

Flink源码解析(1)job启动,从JM到TM过程详解

网络传输模型 首先在看之前,回顾一下akka模型: Flink通讯模型—Akka与Actor模型-CSDN博客 注:ActorRef就是actor的引用,封装好了actor 下面是jm和tm在通讯上的概念图: RpcGateway 不理解网关的作用,可以先移步看这里:网关_百度百科 (baidu.com) 用于定义RPC协议,是…

【Python】【Pandas】详解Pandas模块常用函数

1. pandas简介 Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来,享有数据分析“三剑客之一”的盛名(NumPy、Matplotlib、Pandas)。Pandas 已经成为 Python 数据分析的必备高级工具,它的目标是成为强大、灵活、可以支持任何编程语言的数据分…

torchvision pytorch预训练模型目标检测使用

参考&#xff1a; https://pytorch.org/vision/0.13/models.html https://blog.csdn.net/weixin_42357472/article/details/131747022 有分类、检测、分割相关预训练模型 1、目标检测 https://pytorch.org/vision/0.13/models.html#object-detection-instance-segmentation-…

四.流程控制(顺序,分支,循环,嵌套)

c刚刚转过来的记得写在public static void main&#xff08;String[] args&#xff09;的花括号里 一.顺序结构 二.分支结构 if &#xff0c;switch 1.if (条件判断&#xff09; 2.if else 3.if else if else if ... else(它是一个一个否定来一个个执行判断的 4.s…

以太坊开发学习-solidity(三)函数类型

目录 函数类型 函数类型 solidity官方文档里把函数归到数值类型 函数类型是一种表示函数的类型。可以将一个函数赋值给另一个函数类型的变量&#xff0c; 也可以将一个函数作为参数进行传递&#xff0c;还能在函数调用中返回函数类型变量。 函数类型有两类&#xff1a;- 内部&…