此页面包含的信息有关 Qt for Windows .
把 Qt 安装到带空格的目录下,例如 C:\Program Files ,可能导致像以下的链接器错误:
c:\program.obj not found
存在已知问题,当运行 Microsoft NetMeeting、Lotus SameTime 及其它在直接渲染被启用的时候要求抓取屏幕的应用程序时。其它 GL 应用程序可能不会如期望般工作,除非直接渲染被禁用。
Visual C ++ 链接器不理解带空格的文件名 (例如 C:\Program files\Qt\ ) 所以必须把它移至另一位置,或自己明确设置路径。
QTDIR=C:\Progra~1\Qt
若使用修改 Structure 和 Union 成员对齐的特殊标志时遇到奇怪问题 (譬如
/Zp2
) 那么就需要采用为应用程序设置的标志重新编译 Qt。
当窗口使用基于 OpenGL 的表面并以全屏方式出现时,属于应用程序的其它顶层窗口可能发生问题。由于 Windows DWM (桌面窗口管理器) 的局限性,基于 OpenGL 的窗口合成未被正确处理,当进入全屏模式时。因此,其它顶层窗口不会被放置在全屏窗口的顶部,当它们变得可见时。例如,菜单可能未正确出现,或对话框无法展示。
窗口可以明确使用基于 OpenGL 的表面,当 setSurfaceType() 被调用,或当要求 OpenGL 的东西在窗口中被使用,导致整个窗口基于 OpenGL。例如 QOpenGLWidget or QQuickWidget 可以触发这。不管怎样,若表面包含在 QWindow 其托管采用 createWindowContainer() ,或使用过时的 QGLWidget 且它确实覆盖了整个全屏窗口,此问题就不会发生。
要解决此问题,可以使用 QWindowsWindowFunction 以启用本机窗口标志,设置
WS_BORDER
当以全屏方式展示时。这可以利用如下所示:
QWindowsWindowFunctions::setHasBorderInFullScreen(tlwWindow->windowHandle(), true);
这将给予全屏窗口 1 像素边框,从而使其它顶层窗口能够出现在顶部。