QT串口获取串口设备名称
- 前言`
- 一、实现效果
- 二、实现代码
- 1.检测可用串口,并把名称输出到ComboBox中,并自动根据设备名称的长度调整ComboBox下拉框的长度
- 总结
前言`
最近在用QT弄一个串口上位机,以前用QT做的串口工具在选择串口的时候只能通过串口号选择,在有多个串口设备的时候不是很方便,所以这次就想着搞成选择的时候可以显示串口设备名称的方式。
一、实现效果
目前家里就只有一个CH340的串口设备,但实现效果是可以看到还是比较成功的,显示的设备名称和串口号都是和电脑设备管理器一致的。
二、实现代码
1.检测可用串口,并把名称输出到ComboBox中,并自动根据设备名称的长度调整ComboBox下拉框的长度
代码如下:
int max_len = 0;int pt_val = this->font().pointSize();//获取字体的磅值QList <QSerialPortInfo> serialInfo_list = QSerialPortInfo::availablePorts();//获取到可用串口设备PortStringList.clear(); //将用于存放串口设备名称的List清空ui->portSelectcomboBox->clear(); //把下拉选择框也清空,因为这里是定时调用这段函数来扫描串口设备,所以每次记得要清空List和ComboBox,不然后面尾插就会重复了。。。const auto infos = QSerialPortInfo::availablePorts();for (const QSerialPortInfo &info : infos){/* 先把串口号放到List */PortNameStringList += info.portName();//这是一个QStringList,是用来放串口设备名称字符串的PortStringList+= info.portName();//这个QStringList是用来放串口号的,因为后面选择串口的时候只能通过串口号去选择}for(int i = 0;i < serialInfo_list.size();i++){PortNameStringList[i].append(serialInfo_list.at(i).description());//通过description()吧SerialPortInfo里面的串口设备名称转为QString并尾插到放串口设备名称的容器里,这样就能实现显示串口号和设备名称了max_len = (PortNameStringList.at(i).length()>max_len)? PortNameStringList.at(i).length():max_len;//获取设备名称最长的的长度,用来配置下拉选项框的长度}ui->portSelectcomboBox->view()->setFixedWidth(max_len*pt_val*2);//配置下拉选项框的最大长度ui->portSelectcomboBox->addItems(PortNameStringList);//将设备名称输出到对应的ComBox里
总结
新人的第一篇文章,请多多指教
关于根据串口设备名称长度调整ComboBox下拉列表宽度,参考这个博主的文章https://blog.csdn.net/qq_31073871/article/details/79851430