Spec-Zone.ru › Qt 5.13

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.13/windows-issues.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API