Qt 多线程串口调试助手
之前和大家分享过跨平台多线程串口调试助手,不过里面没有实现自定义波特率的功能。某天我突然想把这个功能加上,但是网上搜索之后有得到有效的信息,于是就查看Qt的帮助文档,查看了波特率的相关枚举值,又查看了setBaudRate,最后还是得查Qt帮助文档,在里面发现了重要依据: To set the baud rate, use the enumerationQSerialPort::BaudRate or any positive qint32 value. 即setBaudRate时,直接传入自定义波特率的值!
这为实现自定义波特率提供了强有力的依据;然后试了下果然可以!
Ok,既然自定义波特率实现了,那么接下来就是在UI中添加这个可以输入自定义波特率的组件了。但是怎么让QComboBox在已有的item上再添加一个lineEdit呢?我陷入了深深的沉思......
这一沉思一周就过去了。结合自己的经验(Qt TableWidget控件及自定义委托),我首先想到的是自定义委托,但是动手测试了下,结果不行,自定义委托中添加的也都是一类相同的控件,于是放弃了该方法。但是别人的功能是怎么实现的呢?于是边查看QComboBox头文件中的函数边在网上搜寻线索,有一个使能QComboBox item可编辑的接口,但是使能之后每个item都可以编辑了,这也不是我想要的结果啊!我还想过,当选择【Custom】时,移除QComboBox对象,添加一个新的可编辑的QComboBox对象,后来觉得这个比较反人类,于是没再继续。
而且查看了别人串口调试助手运行时的库,发现也是用到了Qt,这我就不能忍了。于是看QComboBox的头文件,发现一个setLineEdit,诶!!!这个接口有点意思,值得一试,经过多种组合,终于在Windows下实现了我想要的效果——点击预先设置的波特率,可通过item选择;当选择【Custom】item时,item变成lineEdit,完美!
主要函数如下:
最后效果如下:
小结:
主要就是当你想实现一个功能时,结合自己以前的经验,是否有解决方法?
如果没有的话,主要还是查看官方文档!
当一种方法不行时,及时更换另一种方法。