Spec-Zone.ru › Qt 6.0

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 в полноэкранном режиме могут возникнуть проблемы с другими главными окнами, которые являются частью приложения. Из-за ограничений 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-6.0/windows-issues.html

Spec-Zone.ru

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