Spec-Zone.ru › Qt 5.11

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++ Linker не понимает имена файлов с пробелами (например, 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/archives/qt-5.11/windows-issues.html

Spec-Zone.ru

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