无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

串口助手(上):布局、图标、串口显示与实时时间

网络通信 dancy 1年前 (2023-11-22) 243次浏览 已收录 0个评论 扫描二维码

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

一、串口助手布局
最简单快速的布局就是使用 UI控件 进行布局。

将各个部件拖拉到 1 处,进行布局。
在 2 可以进行各个部件的名称修改。
在 3 处配置各个部件相关功能及其初始化。

串口助手(上):布局、图标、串口显示与实时时间

可以参考一些串口助手模板,在 3 处进行布置 某些界面的使能 ,失能,初始数据,大小等等。
最后布局的效果如下图:

串口助手(上):布局、图标、串口显示与实时时间

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

就是设置 软件左上角的图标,标题。

串口助手(上):布局、图标、串口显示与实时时间

 

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

添加资源文件:

串口助手(上):布局、图标、串口显示与实时时间
串口助手(上):布局、图标、串口显示与实时时间

在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 ports = QSerialPortInfo::availablePorts();
// 获取可用串口列表
QList portList = QSerialPortInfo::availablePorts();

// 遍历串口列表
for(int i=0;iuart->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);	         // 隐藏面板
    }
}


五、显示实时时间
在串口助手的右下角有一个时间显示,这是一个实时的时间。那么怎么实现 这个功能呢?

串口助手(上):布局、图标、串口显示与实时时间

获取当前时间
在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 手册:

串口助手(上):布局、图标、串口显示与实时时间

更新显示的时间
可以通过 一个 定时器 类 QTimer 来实现。


// 创建一个定时器对象
QTimer timer;

// 创建一个定时器对象	
QTimer timer;

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

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

————————————————

原文链接:https://blog.csdn.net/wuyiyu_/article/details/131088269

网页编辑器 markdown空格换行语法完整教程(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

表情 贴图 加粗 删除线 居中 斜体 签到