Qt for Windows - Specific Issues
This page contains information about Qt for Windows.
Library Naming
The configure
option -qtlibinfix cannot take a version number as an argument. For example: -qtlibinfix 5.6.0
should be specified as -qtlibinfix QtCore5.6.dll
.
Installation location
安装 Qt 时, 目录带有空格, 例如, C:\Program Files, 可能造成如下错误:
c:\program.obj not found
安装 Qt 时, 安装目录不要带有空格, 可以避免这个问题.
Possible GL conflict
运行 Microsoft NetMeeting, Lotus SameTime, 及其他抓屏的应用程序时, 存在一个已知问题. 其他的 GL 应用程序可能无法按预期工作, 除非禁用直接渲染.
Visual Studio
Visual C++ Linker 不理解带有空格的文件名 (例如, C:\Program files\Qt\), 因此你必须将其移动到另一个位置, 或者自己显式设置的路径.
QTDIR=C:\Progra~1\Qt
如果你在使用修改结构和联合成员对齐的特殊标志 (例如 /Zp2
) 时遇到奇怪的问题, 那么你还需要使用为应用程序设置的标志重新编译 Qt.
Fullscreen OpenGL Based Windows
当窗口使用基于 OpenGL 的表面并以全屏模式显示时, 作为应用程序一部分的其他顶级窗口可能会出现问题. 由于 Windows DWM 的限制, 当进入全屏模式时, 基于 OpenGL 的窗口无法正确处理合成. 因此, 当其他顶级窗口可见时, 它们不会放置在全屏窗口的顶部. 例如, 菜单可能无法正确显示, 或者对话框无法显示.
窗口可以在调用 setSurfaceType() 时, 显式使用基于 OpenGL 的表面, 或在窗口内部使用需要 OpenGL 的内容时, 导致整个窗口基于 OpenGL. 例如, QOpenGLWidget 或 QQuickWidget 可以触发此操作. 但是, 如果表面包含由 createWindowContainer() 托管的 QWindow 中, 或者使用过时的 QGLWidget, 并且它确实覆盖了整个全屏窗口, 则不会出现此问题.
为了解决这个问题, 可以使用 QWindowsWindowFunction 启用本机 Windows 标志, 该标志将在全屏模式下显示时设置 WS_BORDER
. 可以如下使用:
QWindowsWindowFunctions::setHasBorderInFullScreen(tlwWindow->windowHandle(), true);
这将为全屏窗口提供 1 像素边框, 从而使其他顶级窗口显示在顶部.