Qt для Windows — Особенности
На этой странице представлена информация о Qt для Windows.
Расположение установки
Установка Qt в каталог с пробелами, например, C:\Program Files, может привести к ошибкам компоновщика, таким как следующие:
c:\program.obj not found
Установите Qt в подкаталог без пробелов, чтобы избежать этой проблемы.
Максимальная длина пути
API Win32, используемый как Qt, так и инструментами компилятора, имеет встроенный максимальный размер пути к файлу в 260 символов (MAX_PATH). Это может проявиться различными способами, если структура абсолютного или относительного каталога слишком громоздка. Поэтому рекомендуется ограничивать пути к файлам и размещать каталоги сборки рядом с каталогами исходного кода.
Возможный конфликт GL
Известна проблема при запуске Microsoft NetMeeting, Lotus SameTime и других приложений, требующих захвата экрана, когда включен прямой рендеринг. Другие приложения GL могут работать некорректно, если прямой рендеринг отключен.
Visual Studio
Компоновщик Visual C++ не понимает имена файлов с пробелами (например, C:\Program files\Qt\), поэтому вам необходимо переместить его в другое место или явно установить путь.
QTDIR=C:\Progra~1\Qt
Если у вас возникают странные проблемы при использовании специальных флагов, изменяющих выравнивание элементов структуры и объединения (например, /Zp2), вам потребуется перекомпилировать Qt с установкой этих флагов для приложения.
Окна полноэкранного режима, основанные на OpenGL
Когда окно использует поверхность OpenGL и отображается в полноэкранном режиме, могут возникнуть проблемы с другими главными окнами приложения. Из-за ограничений DWM Windows композитинг не обрабатывается корректно для окон OpenGL при переходе в полноэкранный режим. В результате другие главные окна не отображаются поверх окна полноэкранного режима при их отображении. Например, меню могут отображаться некорректно, или диалоговые окна не показываются.
Окно может использовать поверхность OpenGL как явно, когда вызывается setSurfaceType(), так и при использовании элементов OpenGL внутри окна, что делает все окно основой на OpenGL. Например, QOpenGLWidget или QQuickWidget могут вызвать это. Однако если поверхность содержится в QWindow, которая размещена с помощью createWindowContainer(), или используется устаревший QGLWidget, покрывающий все окно полноэкранного режима, то эта проблема не возникает.
Для решения этой проблемы можно использовать QWindowsWindowFunction, чтобы включить системный флаг Windows, который установит WS_BORDER при отображении в полноэкранном режиме. Это можно использовать следующим образом:
QWindowsWindowFunctions::setHasBorderInFullScreen(tlwWindow->windowHandle(), true);
Это добавит границу в 1 пиксель к полноэкранному окну, что позволит отображать другие главные окна поверх него.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/windows-issues.html