串口助手(布局,图标,串口号,隐藏界面,显示实时时间)

news2024/11/28 1:49:16

文章目录

  • 前言
  • 一、串口助手布局
  • 二、设置软件的标题,图标
  • 三、显示可用串口号
  • 四、隐藏,显示面板
  • 五、显示实时时间
  • 总结

前言

从这篇文章开始 教大家自己制作一个串口助手软件,并实现基本的功能。学做一个 串口助手可以一边回顾复习 QT 的相关知识,也可以进一步了解串口助手功能方法,一举两得。


一、串口助手布局

最简单快速的布局就是使用 UI控件 进行布局。

  • 将各个部件拖拉到 1 处,进行布局。
  • 在 2 可以进行各个部件的名称修改。
  • 在 3 处配置各个部件相关功能及其初始化。
    在这里插入图片描述
    可以参考一些串口助手模板,在 3 处进行布置 某些界面的使能 ,失能,初始数据,大小等等。
    最后布局的效果如下图:
    在这里插入图片描述

二、设置软件的标题,图标

就是设置 软件左上角的图标,标题。
在这里插入图片描述

首先要加入资源文件,就是将 图片加入工程中。

  1. 添加资源文件:

在这里插入图片描述
在这里插入图片描述

  1. 在Qt中,我们可以使用 QMainWindow 类或 QWidget 类中的 setWindowIcon( ) 函数来设置主窗口或窗口部件的图标。

该函数可以传入一个QIcon对象或一个文件路径字符串

 void setWindowIcon(const QIcon &icon);
 //设置左上角图标
 w.setWindowIcon(QIcon(":/icon/fish.jpg"));  
 //设置窗口图标
 w.setWindowTitle("小鱼儿串口助手-1.0"); 

三、显示可用串口号

在Qt中,我们可以使用 QSerialPortInfo 类来获取当前系统上可用的串口列表。

availablePorts( ) 是 QSerialPortInfo 的 静态函数获取系统上所有可用的串口信息。

QList<QSerialPortInfo> ports = QSerialPortInfo::availablePorts();
// 获取可用串口列表
   QList<QSerialPortInfo> portList = QSerialPortInfo::availablePorts();

// 遍历串口列表
   for(int i=0;i<portList.count();i++)
   {
       ui->uart->addItem(portList[i].portName());	// 将名字加入组合框中 
   }

portName( ):获取可用串口的名字。
addItem(const QStringList &text) : 使用给定文本将项目添加到组合框中.

现象就是下图了:
在这里插入图片描述

四、隐藏,显示面板

串口助手上有一个 隐藏面板,点击即可隐藏多文本面板。再次点击,多文本面板再次出现。

点击 " 隐藏面板 ",需要连接信号与槽。触发QPushButton的clicked( )信号
在这里插入图片描述

在Qt中,如果需要 隐藏 某个控件或窗口,可以使用 QWidget 类中的 hide( )setVisible( ) 函数。
需要 显示 某个控件或窗口,可以使用QWidget类中的 show( ) 或 setVisible()函数

setVisible( ) 隐藏面板只需要将需要隐藏的面板的 visible 属性设置为 false 即可。
setVisible( true ) 函数可显示该面板。

void Widget::on_hidePanels_clicked()
{
    flagHide = ~flagHide;					      // 按键按下标志位
    if(!flagHide)
    {
        ui->hidePanels->setText("隐藏面板");	     // setText 修改按钮上的文本

        ui->groupBox_2->setVisible(true);		    // 显示面板
    }
    else
    {
        ui->hidePanels->setText("扩展面板");

        ui->groupBox_2->setVisible(false);	         // 隐藏面板
    }
}

五、显示实时时间

在串口助手的右下角有一个时间显示,这是一个实时的时间。那么怎么实现 这个功能呢?
在这里插入图片描述

  1. 获取当前时间
    在QT中,可以使用系统时间类 QDateTime 来获取当前时间。

currentDateTime( ) 是 QDateTime 类的一个静态方法,用于获取当前系统时间。

QDateTime curDateTime = QDateTime::currentDateTime(); 
void Widget::getTime()
{
	 QDateTime currentTime = QDateTime::currentDateTime();        // 获取当前时间
     
    // 将 QDateTime 对象转换为指定格式的字符串  
    QString strDateTime = currentTime.toString("yyyy-MM-dd hh:mm:ss");

    ui->label_15->setText(strDateTime);	                        // 设置label文本
}

toString( ) 函数参数中的 “yyyy-MM-dd hh:mm:ss” 表示日期和时间的格式。

其中:
yyyy 表示年份,MM 表示月份(两位数),dd 表示日期(两位数);
hh 表示小时(24小时制,两位数),mm 表示分钟(两位数),ss 表示秒(两位数)。
因此,这行代码的实际作用是将当前时间转换为形如 “2023-06-08 21:54:36” 的字符串,并将其存储到 strDateTime 变量中。

可以参考 help 手册:
在这里插入图片描述

  1. 更新显示的时间
    可以通过 一个 定时器 类 QTimer 来实现。
// 创建一个定时器对象	
QTimer timer;

// 设置定时器间隔时间
timer.setInterval(100);
// 启动定时器
timer.start();

// 连接定时器 timeout() 信号到槽函数,每经过 100ms 进入一次槽函数 
connect(&timer,SIGNAL(timeout()),this,SLOT(getTime()));

总结

下一篇文章介绍 串口如何发送,接收数据等。

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

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

相关文章

《面试1v1》G1垃圾回收器

我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 《面试1v1》 连载中… 面试官&#xff1a; G1垃圾收集器?听说很牛逼的样子! 候选人&#xff1a; 是的,G1是JDK9默认的垃圾收集器,代替了CMS收集器。它的目标是达到…

4.运算符|Java学习笔记

文章目录 运算符介绍算术运算符关系运算符&#xff08;比较运算符&#xff09;逻辑运算符赋值运算符三元运算符位运算符 运算符优先级Java命名规范关键字保留字 进制十进制转&#xff08;二/八/十六进制&#xff09;原码、反码、补码 运算符介绍 运算符是一种特殊的符号&#…

【Linux】认识Linux下的编译器gcc/g++ | 认识动静态库

本文思维导图&#xff1a; 文章目录 前言tips: 关于前两篇文章所提到的sudo指令 一、gcc/g编译器的认识和使用tips 1.预处理2. 编译3.汇编4.链接关于预编译&#xff0c;编译&#xff0c;汇编阶段的指令记忆方法 二、gcc/g指令汇总三、认识动静态库1.库的认知库的命名规则静态库…

C++ ---- 继承

目录 继承概念及定义 继承概念 继承定义 语法 继承关系和访问限定符 继承基类成员访问方式的变化 规律总结 以公有继承为例测试 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 构造函数 析构函数 拷贝构造 赋值重载 继承与友元 继承与静态成员…

ESP8266调用NTP服务器进行时间校准

一、背景知识 【1】什么是NTP服务器&#xff1f; NTP是网络时间协议&#xff08;Network Time Protocol&#xff0c;简称NTP&#xff09;&#xff0c;是一种用于同步计算机时间的协议。NTP服务器指的是提供NTP服务的计算机或设备。NTP服务器的主要功能是保证网络上的所有设备…

Linux下信号量使用总结

目录 1.Linux下信号量简介 2.POSIX信号量 2.1 无名信号量 2.2 有名信号量 3.System V信号量 1.Linux下信号量简介 信号量是解决进程之间的同步与互斥的IPC机制&#xff0c;互斥与同步关系存在的症结在于临界资源。 临界资源是在同一个时刻只容许有限个&#xff08;一般只有…

ble系统知识介绍(较为完整,持续更新中)

BLE学习 现在网上关于BLE系统的学习资料实在是太少了&#xff0c;因此本文希望能够聚集一些资料能够系统的入门BLE,本文翻译自Bluetooth_LE_Primer_Paper,还有一些网上的一些资料,如果侵害到了某些作者的权益请及时联系我 参考资料和链接 Bluetooth_LE_Primer_Paper_3MtXws-zP…

GitOps 实践之渐进式发布

本文作者&#xff1a;陈钧桐 腾讯云 CODING DevOps 高级解决方案架构师&#xff0c;从事多年技术布道工作&#xff0c;对于云原生时代下企业数字化转型、IT 与 DevOps 建设、价值流体系搭建等有丰富的经验&#xff0c;曾为多家大型企业提供咨询、解决方案以及内训服务。既关注工…

【Python小技巧】加密又提速,把.py文件编译为.pyd文件(类似dll函数库),你值得拥有!

文章目录 前言一、常见的Python文件格式有哪些&#xff1f;二、准备编译环境1. 安装cython2. 安装Microsoft C 生成工具 三、编译.py文件为.pyd文件1. 编辑原始.py文件2. 准备setup.py文件3. 进行编译 四、测试总结 前言 Python的脚本文件是开源的&#xff0c;若直接发布&#…

i.MX RT1010跨界MCU上手体验(上)

由于项目需要性价比高一些的高性能MCU&#xff0c;了解到NXP的RT1010主频高达500MHZ的MCU&#xff0c;半个月以前已经拿到官方Demo板了&#xff0c;今天抽空上电体验下&#xff0c;在此记录。这颗芯片的优势是主频高&#xff0c;功能全&#xff0c;价格合理&#xff0c;但是需要…

第六章 方法区

文章目录 前言一、&#x1f6fa; 栈、堆、方法区的交互关系二、&#x1f68e; 方法区的理解1、方法区在哪里2、方法区的演变过程 三、&#x1f697; 设置方法区的大小与 OOM1、设置方法区内存的大小2、使用CGLib 让方法区OOM3、如何解决 OOM4、方法区的内部结构5、non-final 的…

利用提示工程优化软件架构:ChatGPT的应用

ChatGPT时代的软件架构全生命周期 简介 在如今日新月异的技术环境中&#xff0c;软件架构师必须不断地寻找和采纳新的工具和方法&#xff0c;以优化开发过程&#xff0c;提高效率&#xff0c;并保证最终产出的质量。其中&#xff0c;人工智能&#xff08;AI&#xff09;已经成…

《淘宝技术这十年》读书笔记

一. 分布式时代 在系统发展的过程中&#xff0c;架构师的眼光至关重要&#xff0c;作为程序员&#xff0c;只要把功能实现即可&#xff0c;但作为架构师&#xff0c;要考虑系统的扩展性、重用性&#xff0c;对于这种敏锐的感觉&#xff0c;有人说是一种“代码洁癖”。淘宝早期…

使用双屏时两个屏幕的色调、亮度不一样如何设置?

当使用双屏时&#xff0c;即使两个屏幕的型号一致也可能存在色差的问题&#xff08;色调不一致&#xff0c;亮度不一致&#xff09;&#xff0c;以下是解决此问题的方法。 Step1.同时按下两个屏幕下方的ok按钮 Step2.此时会进入显示器的OSD界面 Step3.通过按键切换菜单 Step4.…

节省35% MCU开发成本的红外智能洗手器运用方案,N9300-S16音乐芯片

随着全国人民生活水平的逐步提升以及近期疫情影响&#xff0c;公民的健康保护意识也越来越强&#xff0c;洗手液越来越被人们重视以及提倡&#xff0c;即时在受疫情影响是2022年洗手液市场规模也是上升至恐怖34亿元产值&#xff1b;而近年来自动感应洗手液器凭借实用性、便携性…

APP测试面试题快问快答(三)

11. App安装测试的主要内容有哪些&#xff1f; App是客户端程序&#xff0c;客户端程序就需要进行安装才能使用&#xff0c;因此需要测试安装、卸载、升级测试 关注点&#xff1a;正常场景、异常场景。 正常场景&#xff1a; 1. 在不同的操作系统上安装 2. 从不同的安装渠…

windows10安装ElasticSearch

一 安装 Java环境 ElasticSearch使用Java开发的&#xff0c;依赖Java环境&#xff0c;安装 ElasticSearch 之前&#xff0c;需要先安装一个较新版本的 Java&#xff0c;jdk 1.8版本太低了&#xff0c;需要安装jdk 11或更高版本。 Java安装方法请参考 Java 15环境安装 。 二 …

详解字典树原理,代码分析leetcode208. 实现 Trie (前缀树)

0、引言 本文介绍一种能够偶快速查找字符串的树形数据结构-----字典树。介绍其原理&#xff0c;以及通过leetcode208题目这个实例&#xff0c;用数组动手实现一棵字典树&#xff0c;并完成其增、查字符串、查字符串前缀的功能。 1、字典树的应用场景 询问一个单词b&#xff0c…

Mujoco 加载机器人模型(三)

目录 .1 简介 1.1 urdf概述 ​编辑 1.2 导出urdf为可用的xml​编辑 1.3 导出测试​编辑 .2 修改 2.1 添加平面和物体 2.2 关节修改 2.2.1 group 2.2.2 关节修改 2.2.3 关节 解压提供的ur5后 修改compiler的 meshdir路径 <mujoco model"ur5"><compi…

一条耗时100ms的SQL把系统搞崩了

一个项目上线了两个月&#xff0c;除了一些反馈的优化和小Bug之外&#xff0c;项目一切顺利。前期是属于推广阶段&#xff0c;可能使用人员没那么多&#xff0c;当然对于项目部署肯定提前想到并发量了&#xff0c;所以早就把集群安排上&#xff0c;而且还在测试环境搞了一下压测…