项目场景:
使用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();
}