Spec-Zone.ru › Qt 5.6

Qt для Windows — Особые вопросы

На этой странице содержится информация о Qt для Windows.

Windows XP

Настройка целей для XP с Visual Studio 2012 и новее

Visual Studio 2012 и новее по умолчанию не поддерживают построение для Windows XP. Однако поддержка целей для XP была добавлена в обновлении Visual Studio 2012. Это также работает с Visual Studio 2013.

Вам необходимо скомпилировать Qt из исходных кодов. Настройте среду в командной строке, например

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
set PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%
set LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%LIB%
set CL=/D_USING_V110_SDK71_

Затем запустите configure с аргументом -target xp:

configure -target xp <other arguments>
nmake

Примечание: параметр configure -qtlibinfix не может принимать номер версии в качестве аргумента. Например: -qtlibinfix 5.6.0 следует указывать как -qtlibinfix QtCore5.6.dll.

Также скомпилируйте собственное приложение в вышеуказанной среде, если компилируете в командной строке. Если вы используете Visual Studio, установите набор инструментов v110_xp в свойствах проекта.

Расположение установки

Установка Qt в каталог с пробелами, например, C:\Program Files, может вызвать ошибки линковщика, например:

c:\program.obj not found

Установите Qt в подкаталог без пробелов, чтобы избежать этой проблемы.

Возможный конфликт GL

Существует известная проблема, когда работают Microsoft NetMeeting, Lotus SameTime и другие приложения, требующие захвата экрана, при включенном прямом рендеринге. Другие приложения GL могут работать некорректно, если прямой рендеринг отключен.

GCC (MinGW-сборки)

Минимальная поддерживаемая версия MinGW-сборок — GCC 4.7.2. MinGW-сборки GCC 4.7.2 32 бита, rev 8 и более поздние версии должны поддерживать компиляцию Qt.

Дополнительную информацию о MinGW-сборках см. в разделе Конфигурация справки страницы поддерживаемых платформ.

Intel C++ Компилятор (Windows, Altix)

Qt успешно протестирован с:

  • Windows — Intel(R) C++ Компилятор для 32-битных приложений, Версия 9.1.040.
  • Altix — Intel(R) C++ Itanium(R) Компилятор для приложений на базе Itanium(R), Версия 8.1 Сборка 20050406 Идентификатор пакета: l_cc_pc_8.1.030

Visual Studio

Компилятор Visual C++ Linker не понимает имена файлов с пробелами (например, C:\Program files\Qt\), поэтому вам необходимо переместить его в другое место или явно указать путь.

QTDIR=C:\Progra~1\Qt

Если у вас возникают странные проблемы с использованием специальных флагов, которые изменяют выравнивание членов структур и объединений (например, /Zp2), то вам необходимо перекомпилировать Qt с установкой флагов для приложения.

Visual Studio 2010 необходимо обновить до Service Pack 1. В противном случае может возникнуть проблема при компиляции Qt для 64-битных систем в режиме релиз (см. http://support.microsoft.com/kb/2280741).

См. страницу Qt для Windows — Требования для получения информации о конкретных версиях Windows SDK.

Окна 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.6/windows-issues.html

Spec-Zone.ru

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