前言`
最近在用QT弄一个串口上位机,以前用QT做的串口工具在选择串口的时候只能通过串口号选择,在有多个串口设备的时候不是很方便,所以这次就想着搞成选择的时候可以显示串口设备名称的方式。
一、实现效果
目前家里就只有一个CH340的串口设备,但实现效果是可以看到还是比较成功的,显示的设备名称和串口号都是和电脑设备管理器一致的。
二、实现代码
1.检测可用串口,并把名称输出到ComboBox中,并自动根据设备名称的长度调整ComboBox下拉框的长度
代码如下:
1 int max_len = 0;
2 int pt_val = this->font().pointSize();//获取字体的磅值
3 QList <QSerialPortInfo> serialInfo_list = QSerialPortInfo::availablePorts();//获取到可用串口设备
4
5 PortStringList.clear(); //将用于存放串口设备名称的List清空
6 ui->portSelectcomboBox->clear(); //把下拉选择框也清空,因为这里是定时调用这段函数来扫描串口设备,所以每次记得要清空List和ComboBox,不然后面尾插就会重复了。。。
7 const auto infos = QSerialPortInfo::availablePorts();
8 for (const QSerialPortInfo &info : infos)
9 {
10 /* 先把串口号放到List */
11 PortNameStringList += info.portName();//这是一个QStringList,是用来放串口设备名称字符串的
12 PortStringList+= info.portName();//这个QStringList是用来放串口号的,因为后面选择串口的时候只能通过串口号去选择
13 }
14 for(int i = 0;i < serialInfo_list.size();i++)
15 {
16 PortNameStringList[i].append(serialInfo_list.at(i).description());//通过description()吧SerialPortInfo里面的串口设备名称转为QString并尾插到放串口设备名称的容器里,这样就能实现显示串口号和设备名称了
17
18 max_len = (PortNameStringList.at(i).length()>max_len)? PortNameStringList.at(i).length():max_len;//获取设备名称最长的的长度,用来配置下拉选项框的长度
19
20 }
21
22 ui->portSelectcomboBox->view()->setFixedWidth(max_len*pt_val*2);//配置下拉选项框的最大长度
23 ui->portSelectcomboBox->addItems(PortNameStringList);//将设备名称输出到对应的ComBox里
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)