作者:zzssdd2
E-mail:zzssdd2@foxmail.com
一、前言
开发环境:Qt5.12.10 + MinGW
主要实现功能
- 串口参数的配置:
波特率、数据位、停止位、校验位 - 本机串口设备的查询与添加显示
- 串口设备的手动更新与打开关闭
涉及的知识点
- 串口类
QSerialPort及QSerialPortInfo的使用 - 自定义波特率的实现
QComboBox下拉列表自适应文本长度显示- 控件
QPushButton、QComboBox的使用

二、功能实现
下面开始逐步讲解以上列举的功能
2.1、串口设备的查询添加
创建一个串口设备信息列表和串口设备号列表,遍历本机可用串口然后添加到列表中,将设备信息列表显示在对应的QComboBox控件中,设备号列表用来后面打开串口设备使用。
/* 遍历可用串口设备 */
QStringList SerialPort_Name;
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
SerialPort_Name << info.portName()+':'+info.description();
serialDevice << info.portName();
}
/* 添加到串口设备显示框 */
ui->SerialNum_Box->addItems(SerialPort_Name);
2.2、下拉列表自适应
此时已经将串口设备信息添加到下拉框中了,但是下拉框此时是固定长度,如果串口设备信息比较长则无法显示完全(以省略号展示),那么就需要实现下拉框根据设备信息字符串长度适配功能。原理就是遍历列表中所有设备信息字符串的长度,找出最大值然后将下拉框长度设置到能完全显示最大长度字符串。
/* 获取最长字符串 */
int maxlen = 0;
for (int index = 0; index < ui->SerialNum_Box->count(); index++)
{
if (ui->SerialNum_Box->itemText(index).length() > maxlen)
{
maxlen = ui->SerialNum_Box->itemText(index).length();
}
}
/*获取字体磅值转换为像素值*/
int fontsize = ui->SerialNum_Box->font().pointSize();//获取字体的磅值
ui->SerialNum_Box->view()->setFixedWidth(fontsize * maxlen * 0.75);//设置像素值
这里涉及字体磅与像素对应关系,因为setFixedWidth函数参数单位是像素。下面列出字号不同单位对照表:
| 中文字号 | 英文字号(磅) | 毫米 | 像素 |
|---|

本文详细介绍了使用QT5.12.10+MinGW环境开发串口应用的过程,包括串口参数配置(波特率、数据位、停止位、校验位)、串口设备查询与显示、自定义波特率实现、QComboBox控件的下拉列表自适应显示。通过信号槽机制实现串口的打开与关闭,并提供了串口设备的刷新功能。
:参数配置&spm=1001.2101.3001.5002&articleId=112973684&d=1&t=3&u=d60da2c34d33493e94c899bedd71cc2f)
2057

被折叠的 条评论
为什么被折叠?



