背景:
我使用QT开发了一个图形应用程序,主界面即是一张图,显示约150+不同图元,图元为线条、矩形、圆形组合而成,运行在Ubuntu20.04.6 (开发环境)和Ubuntu22.04.0(生产环境)操作系统中。
错误:
在Ubuntu22.04.0(生产环境)操作系统,程序运行出现了奇怪的错误,该错误和操作系统的锁定功能有关。
在程序运行过程中,主动锁定电脑,也就是在桌面右上角,点击电源图标,选择“锁定”,会将图形应用程序卡退!
且没有办法截取到什么错误信息、日志。
然而在Ubuntu20.04.6 (开发环境)没有此现象,调试一切正常。
调试
通过观察应用程序日志,发现最后的日志记录是,主图形的resizeEvent事件中:
```c++
2023-11-13 11:03:21 - [DEBUG] (runview.cpp:406, virtual void RunView::resizeEvent(QResizeEvent*)): event size: QSize(1628, 768) QSize(1630, 770)
2023-11-13 11:03:21 - [DEBUG] (runview.cpp:239, void RunView::showAll()): boundRt: QRectF(20.25,2.5 1876.75x1013) width() 1630 height: 770
我以为是锁定导致窗口宽度变化,在重新绘制图形时使程序崩溃。
然而,通过添加qDebug调试语句发现,重绘制已经成功完成。并非这个原因。
通过拖动窗口边框,频繁修改窗口大小,也未导致程序退出。
疑问:
网络上有一种说法,Ubuntu系统的锁定会暂停图形化应用程序,日志中,也看到程序确实出现窗口变化的记录,但为何会使其卡退呢?