Spec-Zone.ru › Qt 5.14

Qt для UWP

Qt для UWP позволяет запускать приложения Qt на устройствах, поддерживающих универсальную платформу Windows (UWP). Платформа UWP была представлена в Microsoft Windows 10 и предоставляет общую платформу для приложений на всех устройствах, работающих под управлением Windows 10, являясь преемницей платформы Windows Runtime (WinRT), представленной в Windows 8. Основные API UWP одинаковы на всех устройствах Windows, поэтому приложения, использующие только основные API, будут работать на любом устройстве под управлением Windows 10, таком как настольный ПК или Xbox One.

Портирование Qt первоначально было написано для WinRT и обновлено для поддержки UWP. Портирование использует возможности C++. Хотя UWP поддерживает расширения компонентов внутри, они не используются внутри Qt, и вам не нужно их использовать. Приложения UWP выполняются в защищенной среде по соображениям безопасности и поддерживают различные архитектуры, такие как ARM и x86.

Поддерживаемые конфигурации

Поддерживаются следующие конфигурации.

Версия платформы Архитектура Компилятор Среда сборки
Универсальная платформа Windows 10 x86, x86_64, и armv7 MSVC 2017, MSVC 2015 Windows 10

Универсальные платформы Windows включают Windows 10, устройства Windows 10 IoT, Xbox One и HoloLens.

Требования

Разработка для UWP требует хост-систему разработки Microsoft Windows. Минимальная поддерживаемая версия — Windows 10.

Qt поддерживает приложения UWP, работающие на любой версии Windows 10 или более поздней на настольных ПК, устройствах IoT, Xbox One и т. д.

Если вы нацеливаетесь на удаленное устройство, следуйте инструкциям Visual Studio для правильной настройки.

Начало работы

Примечания для пользователей настольных ПК

Поскольку приложения UWP работают в защищённой среде, при переносе или написании кроссплатформенных приложений следует учитывать некоторые ограничения:

  • Класс QProcess не реализован (что указывается определением макроса QT_NO_PROCESS), так как запуск дочерних процессов невозможен.
  • Некоторые пути, возвращаемые QStandardPaths::writableLocation(), могут быть пустыми.
  • Приложение UWP не может осуществлять обмен через сокеты с другим приложением, работающим на том же хосте (так как это нарушит принцип защищённой среды).
  • Приложения запускаются только в полноэкранном режиме (см. QStyleHints). На настольных ПК размер экрана изменяется при изменении размеров приложения.
  • Переменные среды отсутствуют. Qt эмулирует функциональность, сохраняя значения локально, так что qputenv() и связанные функции продолжают работать. Все известные переменные, влияющие на Qt, можно установить в исходном коде.
  • Приложения UWP по своей природе являются приложениями графического интерфейса. Это подразумевает, что приложения типа консоли будут иметь созданное внутри окно, которое всегда видно.
  • Приложения не должны выходить из программы программно. В частности, вызов exit() до отображения графического интерфейса приводит к сбою.
  • Буфер обмена UWP локален для приложения; он не может быть получен приложением настольной системы.

Сборка приложений

Вы можете разрабатывать приложения для UWP так же, как и любые другие приложения Qt. Используйте ваш любимый редактор или IDE (например, Qt Creator) и создайте ваше приложение или загрузите пример Qt. Затем запустите qmake и nmake/jom для сборки вашего приложения.

Сборка приложений с помощью Visual Studio

Для запуска проекта с Visual Studio необходимо создать соответствующий проект. qmake поддерживает преобразование проекта .pro в формат Visual Studio, передавая параметры -tp vc.

qmake -tp vc <your project>.pro

Обращайте внимание на правильное соответствие qmake и Visual Studio. Поскольку формат Visual Studio является универсальным, он не возвращает немедленной ошибки, если, например, вы откроете проект Windows Phone в Visual Studio для Windows.

Это создаёт проект, который поддерживает сборку и запуск приложений с помощью Visual Studio. Он не встраивает библиотеки Qt в пакет и требует от вас их ручного добавления. Для этой цели в установленный пакет включён инструмент командной строки windeployqt. Для включения автоматического анализа зависимостей и добавления библиотек и зависимостей в пакет приложения создайте проект со следующими параметрами:

qmake -tp vc <your project>.pro "CONFIG+=windeployqt"

Сборка приложений с помощью Qt Creator

Вам не нужно выполнять какие-либо преобразования, чтобы открыть свой проект в Qt Creator. Пожалуйста, следуйте общим инструкциям по открытию и сборке проекта.

Qt Creator развертывает ваше приложение на устройстве UWP, если устройство обнаружено ПК.

Примечание: Удаленные ПК, такие как Surface, пока не поддерживаются для развертывания Creator.

Сборка из исходного кода

Предполагается, что вы клонировали репозитории Qt 5 (или получили исходный код Qt где-либо ещё) и выполнили платформенно-независимые требования к сборке Qt. Процесс сборки Qt можно найти на странице Сборка исходного кода Qt.

Qt для UWP всегда собирается как кросс-сборка, потому что такие инструменты, как qmake, собираются как приложения для настольных ПК. Для их компиляции требуется среда разработки для настольных ПК. Если вы установили Visual Studio для Windows, это создаст только двоичные файлы для UWP. Вам также понадобится Visual Studio для настольных Windows, чтобы создать эти инструменты для настольных ПК.

Убедитесь, что вы используете командную строку x86 (либо используйте VS x86 Native Tools Command Prompt, либо вызовите vcvarsall.bat без параметров или с x86) для каждой сборки UWP. Хотя цепочка инструментов, которая используется для целевой платформы, устанавливается автоматически, командная строка определяет, что будет использоваться для инструментов хоста, таких как qmake или moc. Сборка этих инструментов может завершиться ошибкой, если используется другая командная строка.

Формат mkspec UWP — <platform>-<architecture>-<toolchain>, где архитектура может быть arm, x86, или x64. Ниже приведен пример сборки qtbase для UWP:

> ./configure -xplatform winrt-x64-msvc2017 -release
> nmake/jom

Запуск приложений из командной строки

Приложения UWP должны быть упакованы (включая все зависимости) и установлены или зарегистрированы в службе приложений, чтобы их можно было запустить. Инструмент WinRT Runner можно использовать для запуска этих приложений из командной строки.

Содержание пакета

Содержание пакета состоит из исполняемого файла приложения и его зависимостей, как и для любого приложения Windows. Зависимости — это необходимые библиотеки (Qt) и плагины. Обратите внимание, что плагины Qt должны быть помещены в папки, названные по их категории (платформы, форматы изображений и т. д.), без использования папки plugins в качестве корневой папки. Дополнительную информацию см. в разделе Qt для Windows — Развертывание.

Поскольку приложения UWP работают в защищенной среде, установка переменной пути для указания требуемых файлов не сработает.

Удобный инструмент windeployqt ищет зависимости приложения и копирует библиотеки и плагины Qt в соответствующие каталоги по мере необходимости.

Поскольку все ресурсы размещаются в одном каталоге, вы можете зарегистрировать каталог с помощью XML-файла (AppxManifest.xml) и Windows PowerShell. Справочник по этим манифестным файлам можно найти здесь. Необходимо указать архитектуру целевого процессора (в отличие от значения по умолчанию, «нейтральный»). Как только эти требования выполнены, перейдите в папку packaged в PowerShell и выполните команду:

> Add-AppxPackage -Register AppxManifest.xml

Примечание: Инструмент WinRT Runner может выполнить ту же операцию с параметром --install.

Если это сработало, вы должны найти ваше приложение на экране «Пуск» Windows. Чтобы удалить приложение, используйте встроенный в Windows способ удаления приложений (щелкните правой кнопкой мыши или удерживайте приложение и выберите Uninstall).

Примечание: Инструмент WinRT Runner может выполнить ту же операцию с параметром --remove.

Инструмент WinRT Runner

Инструмент WinRT Runner можно найти в QTDIR/bin/winrtrunner. Он предназначен для помощи в развертывании, запуске и отладке приложений Qt для WinRT. Его можно использовать из командной строки или вызвать из IDE.

Usage: winrtrunner [options] package [arguments]
winrtrunner installs, runs, and collects test results for packages made with Qt.

Options:
  --test                            Install, start, collect output, stop (if
                                    needed), and uninstall the package. This is
                                    the default action of winrtrunner.
  --start                           Start the package. The package is installed
                                    if it is not already installed. Pass
                                    --install to force reinstallation.
  --debug <debugger>                Start the package with the debugger
                                    attached. The package is installed if it is
                                    not already installed. Pass --install to
                                    force reinstallation.
  --debugger-arguments <arguments>  Arguments that are passed to the debugger
                                    when --debug is used. If no debugger was
                                    provided this option is ignored.
  --suspend                         Suspend a running package. When combined
                                    with --stop or --test, the app will be
                                    suspended before being terminated.
  --stop                            Terminate a running package. Can be be
                                    combined with --start and --suspend.
  --wait <seconds>                  If the package is running, waits the given
                                    number of seconds before continuing to the
                                    next task. Passing 0 causes the runner to
                                    wait indefinitely.
  --install                         (Re)installs the package.
  --remove                          Uninstalls the package.
  --device <name|index>             Specifies the device to target as a device
                                    name or index. Use --list-devices to find
                                    available devices. The default device is the
                                    first device found for the active run
                                    profile.
  --profile <name>                  Force a particular run profile.
  --list-devices                    List the available devices (for use with
                                    --device).
  --verbose <level>                 The verbosity level of the message output
                                    (0 - silent, 1 - info, 2 - debug). Defaults
                                    to 1.
  --ignore-errors                   Always exit with code 0, regardless of the
                                    error state.
  --loopbackexempt <mode>           Enables localhost communication for
                                    clients,servers or both. Adding this
                                    possibility for servers needs elevated
                                    rights and might ask for these in a
                                    dialog.Possible values: client, server,
                                    clientserver
  -?, -h, --help                    Displays this help.

Arguments:
  package [arguments]               The executable or package manifest to act
                                    upon. Arguments after the package name will
                                    be passed to the application when it starts.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/winrt-support.html

Spec-Zone.ru

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