Spec-Zone.ru › Qt 5.9

Qt для WinRT

Qt для WinRT позволяет запускать приложения Qt на устройствах, поддерживающих API приложений Магазина Windows. Это охватывает приложения с современным пользовательским интерфейсом в Windows 10, Windows 10 Mobile и Windows 10 IoT.

Microsoft представила новую парадигму дизайна с современным пользовательским интерфейсом Windows 8. Основной частью этого нового подхода является Windows Runtime (WinRT), который поддерживает разработку с использованием различных языков программирования, таких как C++/CX (расширения компонентов), C#, VB.NET или JavaScript. Порт Qt использует возможности C++. Хотя WinRT поддерживает расширения компонентов внутри, они не используются в Qt, и вам не нужно их использовать. Приложения WinRT выполняются в защищенной среде по соображениям безопасности и поддерживают различные архитектуры, такие как ARM и x86.

Требования

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

В зависимости от целевого устройства вам понадобятся следующие инструменты, предоставленные Microsoft, для установки:

Целевое устройство Среда
Windows 10 Mobile Visual Studio 2015
Рабочий стол Windows 10 Visual Studio 2015
Windows 10 IoT Visual Studio 2015
XBox One Visual Studio 2015

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

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

Примечания для пользователей рабочего стола

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

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

Создание приложений

Вы можете создавать приложения для WinRT так же, как и для других приложений 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 развертывает ваше приложение на устройстве WinRT, если устройство обнаружено компьютером.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

> Add-AppxPackage -Register AppxManifest.xml

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

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

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

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

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

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

Options:
  --test                            Installs, starts, collects output, stops (if
                                    needed), and uninstalls the package. This is
                                    the default action of winrtrunner.
  --start                           Starts the package. The package is installed
                                    if it is not already installed. Pass
                                    --install to force reinstallation.
  --debug <debugger>                Starts the package with the debugger
                                    attached. The package is installed if it is
                                    not already installed. Pass --install to
                                    force reinstallation.
  --debugger-arguments <arguments>  Sets the arguments to be passed to the
                                    debugger when --debug is used. If no
                                    debugger was provided, this option is ignored.
  --suspend                         Suspends a running package. When combined
                                    with --stop or --test, the app will be
                                    suspended before being terminated.
  --stop                            Terminates 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>                  Forces a particular run profile.
  --list-devices                    Lists the available devices (for use with
                                    --device).
  --verbose <level>                 Sets the verbosity level of the message output
                                    (0 - silent, 1 - info, 2 - debug). Defaults
                                    to 1.
  --ignore-errors                   Always exits with code 0, regardless of the
                                    error state.
  -?, -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.9/winrt-support.html

Spec-Zone.ru

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