Qt5.15.2 QFileDialog 问题

在使用Qt5.15.2版本通过串口与硬件进行通讯时,发现当打开QFileDialog窗口时,无法接收到设备主动推送的数据。问题可能由于QFileDialog阻塞了事件循环。为解决此问题,文章提出了一个解决方案,即重写QFileDialog的exec方法,添加定时器定时调用QApplication::processEvents来确保事件循环的正常运行,从而在弹窗打开期间也能接收到数据。
摘要由CSDN通过智能技术生成

项目场景:

使用Qt5.15.2版本, 通过串口与硬件通讯,每隔1秒设备主动传输数据到PC


问题描述

在打开QFileDialog弹窗时,就没有接收到主动推送的数据,关闭弹窗后又能正常的接收数据


原因分析:

猜测可能是Qt5.15.2 QFileDialog 没让应用事件完全循环导致


解决方案:

重写了QFileDialog 的exec方法加入定时器,定时执行事件循环
关键函数实现:

void FileDialog::timerEvent(QTimerEvent *)
{
	// 事件循环标志根据需求做更改
   QApplication::processEvents(QEventLoop::EventLoopExec);
}
int FileDialog::exec()
{
   startTimer(50);
   return QFileDialog::exec();
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值