Qt6调用widget->showMaximized首次显示时界面冻结闪烁问题
Qt 6.2最大化启动时控件首次绘制异常问题
从Qt5升级至Qt 6.2版本后,会遇到应用最大化模式启动异常的问题:控件首次绘制时会先以常规尺寸渲染,之后才能正确重绘为最大化状态,中间异常状态参考下方动图:
问题复现说明
- 测试使用的Qt版本为Qt-6.2.3,复现用例为Qt官方自带的
styles示例,本地存储路径为Qt/Examples/Qt-6.2.3/widgets/widgets/styles - 仅需修改示例
main.cpp中的代码,将widget.show()替换为widget.showMaximized()即可复现该问题 - 该问题偶现正常启动情况,但概率极低;同时控件复杂度越高,首次显示时完成正确绘制的耗时就越长。轻量示例启动速度快,异常状态几乎难以察觉,但在重型应用中,该启动阶段的异常显示问题非常明显,极易被用户感知。
方案征集
如果该问题无法快速修复,需要可掩盖该异常表现的可行方案。此前曾考虑先将控件绘制到虚拟帧缓冲,待首次显示完成后再移动到主显示屏,但未找到C++中简便的虚拟帧缓冲创建实现方式,欢迎提供相关解决思路。
问题进度
目前已向Qt官方开发者提交该Bug,对应工单编号为QTBUG-104357。
内容的提问来源于stack exchange,提问作者Алексей Щербаков
相关产品推荐
相关产品推荐

