这个是Qt5的bug,参考链接 https://doc.qt.io/qt-5/windows-issues.html。
简单翻译就是,基于OpenGL的全屏窗口无法与上层窗口正确合成,给这个全屏窗口下移一个像素就行了。这里有个讨论串 https://bbs.csdn.net/topics/392484482,其中有个方案就是直接移动窗口的。
文章中说调用这句就行
QWindowsWindowFunctions::setHasBorderInFullScreen(tlwWindow->windowHandle(), true);
关于这个函数调用,有一些注意的点,不过都可以在Qt的文档中找到就是了。
- 包含头文件 #include <QtPlatformHeaders/QWindowsWindowFunctions>
- windowHandle 是需要先调用 winId() 产生一个native窗口才能正确调用的。
- tlwWindow 指的是目标的全屏窗口。