Qt для Windows — Определённые проблемы
На этой странице содержится информация о Qt для Windows.
Именование библиотек
Опция configure -qtlibinfix не может принимать номер версии в качестве аргумента. Например: -qtlibinfix 5.6.0 следует указать как -qtlibinfix QtCore5.6.dll.
Расположение установки
Установка Qt в директорию с пробелами, например, C:\Program Files, может привести к ошибкам компоновщика, таким как:
c:\program.obj not found
Установите Qt в поддиректорию без пробелов, чтобы избежать этой проблемы.
Возможный конфликт GL
Существует известная проблема при запуске Microsoft NetMeeting, Lotus SameTime и других приложений, требующих захвата экрана, когда включено прямое отображение. Другие приложения GL могут работать некорректно, если прямое отображение не отключено.
Visual Studio
Компоновщик Visual C++ не понимает имена файлов с пробелами (например, C:\Program files\Qt\), поэтому вам придётся перенести его в другое место или явно задать путь.
QTDIR=C:\Progra~1\Qt
Если у вас возникают странные проблемы при использовании специальных флагов, которые изменяют выравнивание элементов структур и объединений (например, /Zp2), то вам потребуется перекомпилировать Qt с установкой этих флагов для приложения.
Окна на весь экран, основанные на OpenGL
Когда окно использует поверхность на основе OpenGL и отображается в полноэкранном режиме, могут возникнуть проблемы с другими верхнеуровневыми окнами, которые являются частью приложения. Из-за ограничений Windows DWM композирование не обрабатывается должным образом для окон на основе 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-5.9/windows-issues.html