由于ComboBox没有鼠标点击信号,所以如果想实现点击下拉框响应,需要重写ComboBox下拉框的鼠标点击事件。在点击事件中,添加扫描可用串口代码,实现点击下拉框时重新扫描串口。并且下拉框内容输出端口硬件信息,便于区分与选择。

GitHub源码:Qt串口调试助手下载

实现结果:点击串口选择下拉框,重新扫描可用串口,并且显示端口硬件信息。

1. 新建类,继承 QComboBox,重写鼠标点击事件

代码中,对一些方法和属性的说明:

  • scanActivePort:扫描可用串口函数。由构造函数和鼠标点击事件使用。
  • QSerialPortInfo::portName:串口端口名称。
  • QSerialPortInfo::description:串口端口 硬件 / 驱动 信息。
  • showPopup:ComboBox弹出下拉框动作。

myComboBox.cpp

#include "mycombobox.h"myComboBox::myComboBox(QWidget *parent) : QComboBox(parent)
{// 扫描可用串口scanActivePort();
}// 扫描可用串口
void myComboBox::scanActivePort()
{// 先清空列表项,防止多次刷新后重叠clear();// 串口端口号列表QStringList serialPortName;// 自动扫描当前可用串口,返回值追加到字符数组中foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){//serialPortName << info.portName();// 不携带有串口设备信息的文本// 携带有串口设备信息的文本QString serialPortInfo = info.portName() + ": " + info.description();// 串口设备信息,芯片/驱动名称//QString serialPortInfo = info.portName() + ": " + info.manufacturer();// 串口设备制造商//QString serialPortInfo = info.portName() + ": " + info.serialNumber();// 串口设备的序列号,没什么用//QString serialPortInfo = info.portName() + ": " + info.systemLocation();// 串口设备的系统位置,没什么用serialPortName << serialPortInfo;}// 可用串口号,显示到串口选择下拉框中this->addItems(serialPortName);
}// 重写鼠标点击事件
void myComboBox::mousePressEvent(QMouseEvent *event)
{if(event->button() == Qt::LeftButton){// 扫描可用串口scanActivePort();// 弹出下拉框showPopup();}
}

myComboBox.h

#ifndef MYCOMBOBOX_H
#define MYCOMBOBOX_H#include <QComboBox>
#include <QMouseEvent>
#include <QSerialPort>
#include <QSerialPortInfo>class myComboBox : public QComboBox
{Q_OBJECT
public:explicit myComboBox(QWidget *parent = nullptr);// 重写鼠标点击事件void mousePressEvent(QMouseEvent *event);signals:private:void scanActivePort();};#endif // MYCOMBOBOX_H

2. 打开串口时,过滤串口信息

通过上面的代码,我们对 cmbSerialPort下拉框进行了重写,使其在鼠标点击时重新扫描端口,并将字符串列表添加上了硬件信息。而设置串口名称时,输入 "COM4: CH340" 这样带有硬件信息的字符串,应用会报错,导致打开端口不成功。这时需要对其进行过滤,使其仅输入 "COM4" "COM12" 这样的字符串,过滤掉后面的 ": xxx"字段 。

section(':', 0, 0) 和 mid(0, spTxt.indexOf(":")) 两种方法均可。都能达到过滤串口端口信息的效果。

GitHub源码:Qt串口调试助手下载

【Qt串口调试助手】1.3 - 重写ComboBox下拉框的鼠标点击事件,实现点击下拉框扫描可用串口相关推荐

  1. 【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程

    这章来学习串口数据流操作.仿照已有成品制作一个用Qt开发的串口调试助手. 介于篇幅有限,本篇只介绍一个最简单的能收发的串口调试助手的制作.后续篇幅会陆续对剩余代码进行讲解,并添加各种功能,对显示.操作 ...

  2. 【Qt串口调试助手】1.7 - QLabel标签插入链接,修改Qt应用图标

    QLabel标签添加超链接,点击 即可通过默认浏览器打开网页. GitHub源码:Qt串口调试助手下载 QLabel标签添加链接 Qt支持 HTML语音,所以可以对链接颜色.字体.有无下划线等进行设置 ...

  3. 【Qt串口调试助手】1.2 - 串口数据接收不发生换行,CH340 / CP2102 多硬件兼容

    上一篇提到:对串口接收的显示,使用的是当前位置插入+移动鼠标光标到末尾的方式.这种方法可以有效解决 串口数据接收发生换行的问题,并且解决 CH340 / CP2102 多硬件显示结果不一致的问题.那有 ...

  4. 【Qt串口调试助手】1.8 - 修改Qt应用图标和窗口图标

    修改Qt应用图标和窗口图标. GitHub源码:Qt串口调试助手下载 修改应用图标 首先选择一张喜欢的图片,来作为应用图标,图片格式必须为 .ico. easyicon.net 有很多可供下载的资源. ...

  5. 【Qt串口调试助手】1.6 - QTimer定时自动发送

    使用定时器,控制应用自动发送数据,发送间隔时间可控. GitHub源码:Qt串口调试助手下载 QTimer定时自动发送 (1)ui设计界面拖入 Line Edit.Label.Check Box. ( ...

  6. 【Qt串口调试助手】1.5 - 发送/接收字节数量统计

    对发送/接收的字节数目计数,显示到底部状态栏中. GitHub源码:Qt串口调试助手下载 接收字节数计数 (1)在 mainwindow.h文件中创建 收发数属性,再创建两个 标签指针,用于显示收发数 ...

  7. 【Qt串口调试助手】1.0 - 400行代码撸一个Qt5串口调试助手框架

    1. 设计目的 使用Qt设计一款串口调试助手,具有自动扫描串口端口.列表端口硬件信息.16进制转换.收发数目统计.定时发送等功能.代码注释清晰,应用无内建缓存区,运行效率高,适合拿来学习和作为二次开发 ...

  8. 【Qt串口调试助手】1.4 - 16进制接收/发送

    作为串口调试助手,16进制显示当然是必备功能. 参考文章:QString.QByteArray 16进制转换 GitHub源码:Qt串口调试助手下载 16进制接收 添加两个复选框,"16进制 ...

  9. C#_串口调试助手-扫描可用串口

    首先使用的是扫描串口号的方式去扫描可用串口,扫描20个串口,并尝试打开此串口,如果可以打开则说明此串口可用,添加到列表否则错误跳过 但是会造成当已经打开过某个串口将无法扫描到,不是很可取 privat ...

最新文章

  1. Rocksdb 的 BlobDB key-value 分离存储插件
  2. 还在发愁写API文档?推荐一款阿里腾讯都在用的API管理神器!
  3. Ubuntu 16.04下减小/释放/清理VirtualBox虚拟硬盘文件的大小
  4. AtCoder AGC043C Giant Graph (图论、SG函数、FWT)
  5. 如何看待瘦身成功版BERT——ALBERT?
  6. 【视频教程】使用 ASP.NET Core 3.x 构建 RESTful Web API 已完结
  7. OpenGL仿作橡皮筋技术
  8. Lua 笔记--表达式
  9. 占空比输出程序c语言,怎样利用c语言来实现占空比的设置?(单片机:SPCE061A)
  10. 最全的货币代码中文翻译.
  11. 成为全栈工程师的6个要素
  12. Primer设计PCR引物的方法,在线引物设计网站汇总整理
  13. 简单上手理解Dav框架
  14. 区块链+数字经济,我们看到了什么
  15. RNA 10. SCI 文章中基因表达富集之 KEGG 注释
  16. 登陆拦截页面报错:localhost 将您重定向的次数过多。 尝试清除 Cookie. ERR_TOO_MANY_REDIRECTS
  17. python 日历热力图_Python绘制日历图和热力图
  18. javascript的几种设计模式
  19. Mybatis报错:Could not resolve type alias
  20. perl、python、shell脚本区别

热门文章

  1. A Byte of Python 笔记(12)python 标准库:sys、os,更多内容
  2. net 将WebService生成dll文件
  3. SQL Server 数据库身份认证以及包含数据库
  4. 获取map中的一个value值以及遍历map获得map里所有key、value的值
  5. 【每日Scrum】第三天(4.24) TD学生助手Sprint2站立会议
  6. POJ 1001 Exponentiation (记第一道Java水过的题)
  7. AjaxControltoolkit学习笔记—PopupControl 使用详解
  8. Powershell远程管理服务器客户端
  9. 直连数据库实时更新数据,比python强大,可视化报表这么做简直牛
  10. 彻底告别“人工+Excel”低效模式,传统制造业实现“一站式”数据化管理