Spec-Zone.ru › Qt 5.15

Qt для UWP

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

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

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

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

Версия платформы Архитектура Компилятор Среда разработки
Universal Windows Platform 10 x86, x86_64, и armv7 MSVC 2019, MSVC 2017 Windows 10

Universal Windows Platforms включают 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 Desktop для создания этих инструментов для настольных ПК.

Убедитесь, что для каждой сборки UWP используется командная строка 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.15/winrt-support.html

Spec-Zone.ru

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