Qt5.3的BUG-关闭事件中串口发送数据问题

  • 问题描述:在Qt5.3.0中,想在主界面的关闭事件中通过串口发送多条数据,如果发送的语句放在QMessageBox之后,则只有第一条数据能成功发送,如果发送语句前没有QMessageBox,则可以全部发送。

  • 验证:

测试1: 使用Qt5.3.0,发送的语句放在QMessageBox之后

//关闭事件
void MainFrm::closeEvent(QCloseEvent *ev)
{
	int ans = QMessageBox::question(this, "提示", "是否关闭?", QMessageBox::Ok | QMessageBox::Cancel);

	if (QMessageBox::Ok == ans)
	{
		m_comNetTool.sendComMsg("1111#");//串口发送,只有这一条能够成功发送
		m_comNetTool.sendComMsg("2222#");
		m_comNetTool.sendComMsg("3333#");

		ev->accept();
	}
	else
	{
		ev->ignore();
	}
}

结果:只能成功发送"1111#"
在这里插入图片描述


测试2: 使用Qt5.3.0,发送的语句之前没有QMessageBox

//关闭事件
void MainFrm::closeEvent(QCloseEvent *ev)
{
	m_comNetTool.sendComMsg("1111#");
	m_comNetTool.sendComMsg("2222#");
	m_comNetTool.sendComMsg("3333#");
}

在这里插入图片描述

结果:可以全部发送


测试3: 使用Qt5.9.0,与测试1相同的代码

//关闭事件
void MainFrm::closeEvent(QCloseEvent *ev)
{
	int ans = QMessageBox::question(this, "提示", "是否关闭?", QMessageBox::Ok | QMessageBox::Cancel);

	if (QMessageBox::Ok == ans)
	{
		m_comNetTool.sendComMsg("1111#");		//串口发送
		m_comNetTool.sendComMsg("2222#");
		m_comNetTool.sendComMsg("3333#");

		ev->accept();
	}
	else
	{
		ev->ignore();
	}
}

结果:可以全部发送

在这里插入图片描述


  • 结论:应该是Qt5.3.0的一个BUG,暂未找到其他可能的原因。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值