Spec-Zone.ru › Qt 5.6

Qt для WinRT

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

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

Требования

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

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

Целевое устройство Среда
Современный интерфейс Windows 8.1 Visual Studio 2013 для Windows
Windows RT Visual Studio 2013 для Windows
Windows Phone 8.1 Visual Studio 2013 для Windows Phone
Windows 10 Visual Studio 2015

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

Если вы нацеливаетесь на эмулятор Windows Phone, для запуска самого эмулятора требуется Microsoft Windows 8.1 Pro.

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

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

Поскольку приложения 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/Windows Phone. Хотя среда разработки, используемая для целевого устройства, устанавливается автоматически, командная строка определяет, что будет использоваться для инструментов хоста, таких как qmake или moc. Сборка этих инструментов может завершиться ошибкой, если используется другая командная строка.

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

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

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

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

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

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

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

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

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

> Add-AppxPackage -Register AppxManifest.xml

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

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

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

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

Инструмент WinRT Runner находится в 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/archives/qt-5.6/winrt-support.html

Spec-Zone.ru

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