Qt WebEngine 程序在无显卡/OpenGL环境下的运行
2024年10月10日大约 1 分钟
理论
写了一个带 Qt WebEngine 模块的程序,在日常机器上都好好的。但在一些老电脑上和一些特殊的云端、虚拟化环境下,会出现界面无法显示、显示不全、本地显示器能看到但远程桌面看不到等问题。
应该是 Qt WebEngine 模块依赖 OpenGL,而某些环境没有安装显卡驱动或者云端平台不能正常捕获OpenGL窗口,导致无法运行。
这个时候,可以额外传递下面两个命令行,强制网页界面不使用OpenGL渲染,实现兼容:
--disable-gpu --no-sandbox
代码层面上不需要任何更改。显然,Qt WeEngine 模块会自动检测相关的命令行,并调整自身行为。
不过,起码你的程序要能兼容这些额外的命令行参数,起码要有忽略他们的能力。如果写死了必须有X个参数第几个参数一定是XX意思,那代码不改也不行了。
示例
例如,我们有一个已经安装好的程序,显示不太正常并且一致系统和显卡相对比较老。则可以在其快捷方式上右键-属性,打开如下界面:

此时,在目标路径后添加 --disable-gpu --no-sandbox
即可,注意.exe
与第一个--
之间有一个空格。如下:

然后,单击“确定”保存修改,再次打开界面查看显示是否正常。