qt int转换成qstring_Qt 串口自定义波特率

385fba05f436588c6b8dd3f1ae3333cd.png

之前和大家分享过跨平台多线程串口调试助手,不过里面没有实现自定义波特率的功能。某天我突然想把这个功能加上,但是网上搜索之后有得到有效的信息,于是就查看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,完美!

主要函数如下:

connect(ui->cbx_baudrate, SIGNAL(currentIndexChanged(int)),

this, SLOT(slot_baudrateIndexChange(int)));

//当选择【Custom】item时

void SerialPortMainWindow::slot_baudrateIndexChange(int baudrateIndex)

{

if(4 == baudrateIndex)

{

QLineEdit *lineEdit = new QLineEdit(this); //输入时可使用正则表达式做一定限制

ui->cbx_baudrate->setLineEdit(lineEdit);

}

else

{

ui->cbx_baudrate->setEditable(false);

}

}

connect(ui->cbx_baudrate, SIGNAL(currentTextChanged(QString)),

this, SLOT(slot_baudrateChange(QString)));

//获得自定义波特率的值

void SerialPortMainWindow::slot_baudrateChange(QString baudrateText)

{

m_baudrate = baudrateText;

qDebug() << m_baudrate;

}

最后效果如下:

67dfe00708f3ee5fda657e954b266f17.png

小结:

主要就是当你想实现一个功能时,结合自己以前的经验,是否有解决方法?

如果没有的话,主要还是查看官方文档!

当一种方法不行时,及时更换另一种方法。

如需完成工程,可在公众号 Pou光明 后台留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值