qt showevent引发的问题

qt开发客户端项目,会出现监听日志重复打印问题。

  • 开发工具: qt creator 4.8.0
  • 事件: void MainWindow::showEvent(QShowEvent *event)
  • 业务情景: 使用socket编程,创建服务端监听外部设备的连接。当只有一个设备连接到服务端后,对设备进行监听。如设备提供的电压、电流 出现问题,或者设备没了心跳 ,以及联网断线 ,都会打印日志 以及给出报警提示 ,并且还会有报警提示音
  • 异常情况: 当上述业务场景中设备异常 ,就会产生多次报警,影响产品使用体验 ,并且还会打印多个重复日志
  • 问题原因: showEvent事件重复执行 ,导致创建多个服务器server实例注册多次重复监听,会导致问题。
  • 解决方法: 增加校验参数。判断页面是否是初次打开
  • 问题排查思路: 此问题不容易发现,本机几乎很难发现此问题,会因人使用电脑的操作习惯不同 容易触发此bug
  • 下面是关键代码: 主页面页面展示时注册的监听回调方法,每次隐藏主页面打开时都会执行此方法。
c++ 复制代码
void MainWindow::showEvent(QShowEvent *event) {
    // 设置当前用户名(每次显示都需要更新)
    this->ui->loginName->setText(QString("当前登录用户: %1").arg(this->loginName));
    this->initStatusDesc();
    
    // 只在首次显示时执行初始化
    if (isFirstShow) {
        isFirstShow = false;
        
        // 页面显示时启动定时器(只在首次启动)
        tipTimer->start(5000);
        clockTimer->start(1000);
        
        // 添加提醒监听
        connect(this->tipManager, &DevTipManager::timeoffTip, this, [=](DevErrorMsgDTO devErrMsgDto){
            // 打印控制台
            this->consolePrint(devErrMsgDto.errorMsgEnHance);
            // 异常提醒
            this->popErrorMsg(devErrMsgDto);
        });
        // 初始化服务器
        iniTcpServer();
        // 添加离线监控
        Myapp::Pairs onlinePairsConfig = Myapp::getPairsByKey(Myapp::DEADLINE_LIMIT_TIME);
        devOnlineMgr = new DevOnlineManager(this, &onlinePairsConfig);
        // 添加离线设备监控
        initSystemSetListener();
    }
    
    // 触发故障检查(每次显示都需要执行)
    emit SignalRelayer::instance()->updateStatus();
}

总结

  1. 发现问题的思路:有些问题是操作习惯原因,很难发现,可以询问AI解决,此问题就是它抓到的。
  2. 有的时候我们认为AI只会编程,只会修改自己编写的程序bug,其实任何事情只要让他理解后都能尽职起到作用。
  3. 这次用的AI是在编程工具Cursor中使用的GPT-5.1 codex找到的问题。
相关推荐
Quz4 小时前
QML 拖拽篇:接收拖拽与数据交换
qt
张人玉1 天前
基于 Python 机器学习 与 PyQt5 桌面框架开发的可视化分析系统——基于大数据的网上购物消费行为分析可视化大屏
python·qt·机器学习·echarts·three.js
「QT(C++)开发工程师」1 天前
C++11 std::unique_ptr — 独占所有权的智能指针
c语言·开发语言·c++·qt
小镇敲码人1 天前
【深入浅出】之Qt 事件系统实战:鼠标、键盘、滚轮、窗口与定时器事件
数据库·qt·网络协议·mysql·http
小小龙学IT1 天前
Qt 数据库编程(Qt SQL 模块)深度解析
数据库·sql·qt
Qt历险记1 天前
C++11 std::unique_ptr — 独占所有权的智能指针
qt
宏笋1 天前
一款集结古今中外文学查阅与编辑的软件
qt
机器视觉知识推荐、就业指导2 天前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan2 天前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
小灰灰搞电子2 天前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt