Qt для WebAssembly
WebAssembly — это двоичный формат, позволяющий использовать исполняемый код в веб-страницах в защищённой среде. Этот формат почти так же быстр, как и машинный код, и теперь поддерживается всеми основными веб-браузерами.
Qt для WebAssembly — это плагин платформы, который позволяет создавать приложения Qt, которые могут быть интегрированы в ваши веб-страницы. Он не требует установки клиента и уменьшает использование ресурсов на стороне сервера.
Начало работы с Qt для WebAssembly
Установка Emscripten
emscripten — это инструментарий для компиляции в asm.js и WebAssembly. Он позволяет запускать Qt в веб-среде с почти родной скоростью без плагинов.
Обратитесь к документации emscripten для получения более подробной информации о проверке SDK Emscripten и установке и активации Emscripten для вашей версии Qt.
После установки emscripten должен быть в вашей переменной PATH. Проверьте это с помощью следующей команды:
em++ --version
Каждая небольшая версия Qt поддерживает известную хорошую версию Emscripten. Эта версия Emscripten будет поддерживаться на протяжении всего срока службы данной версии Qt.
Известные хорошие версии:
- Qt 5.12: 1.38.16
- Qt 5.13: 1.38.27 (многопоточность: 1.38.30)
- Qt 5.14: 1.38.27 (многопоточность: 1.38.30)
Используйте emsdk для установки конкретных emscripten версий. Например, для установки для Qt 5.13 введите:
- ./emsdk install sdk-fastcomp-1.38.27-64bit
- ./emsdk activate --embedded sdk-fastcomp-1.38.27-64bit
Опция --embedded полезна, если вы хотите установить несколько версий SDK. Она находит все файлы конфигурации и кеши внутри SDK, чтобы избежать конфликтов между различными версиями.
После установки emscripten должен быть в вашей переменной PATH. Проверьте это с помощью следующей команды:
em++ --version
Загрузка библиотек
Бинарные сборки можно загрузить в разделе «Загрузки» с помощью вашей учётной записи Qt.
Сборка Qt из исходных кодов
В качестве альтернативы, вы можете загрузить исходные коды Qt в разделе «Загрузки» и собрать Qt из них.
Настройте Qt как кросс-компиляцию для wasm-emscripten платформы. Это неявно установит опции «-static» и «-no-feature-thread». Передайте опцию -compile-examples для включения примеров.
./configure -xplatform wasm-emscripten -nomake examples -prefix $PWD/qtbase
В Windows убедитесь, что у вас установлены MinGW и sed в PATH, и выполните настройку следующим образом:
configure -no-warnings-are-errors -xplatform wasm-emscripten -platform win32-g++ -nomake examples -prefix %CD%\qtbase
Сборка необходимых модулей:
make module-qtbase module-qtdeclarative [other modules]
Сборка Qt является статической и не поддерживает потоки.
Сборка и запуск приложения
$ /path/to/qt-wasm/qtbase/bin/qmake $ make
Это создаёт следующие файлы:
| Сгенерированный файл | Краткое описание |
|---|---|
| app.html | Контейнер HTML |
| qtloader.js | JS API для загрузки приложений Qt |
| app.js | JS API для загрузки приложений Qt |
| app.wasm | Бинарный файл приложения emscripten |
При развертывании приложения сжатие обычно выполняется на стороне сервера. Мы рекомендуем сжимать wasm-бинарники, так как это обычно уменьшает размер файла на 50%.
Тестирование приложения
Вы можете запустить приложение следующим образом:
/path/to/emscripten/emrun --browser=firefox appname.html
Примеры
- Пример отображения логотипа Qt с помощью вызовов OpenGL
- Пример использования в автоматизации производства
- Галерея доступных элементов управления в Qt Quick Controls
- Простой текстовый редактор, написанный с помощью Qt Widgets
Ограничения
Самое важное ограничение заключается в том, что сборка Qt статическая и не поддерживает потоки.
Для получения дополнительной информации см. Known_issues_and_platform_notes.
Внешние ресурсы
- Qt для WebAssembly – предварительный технологический просмотр
- Qt и WebAssembly
- Вики Qt для WebAssembly
- Начало работы с Qt для WebAssembly
- Удаленные пользовательские интерфейсы с WebGL и WebAssembly
- Веб-сайт ресурсов WebAssembly
Лицензии
Qt для WebAssembly доступен по коммерческим лицензиям от The Qt Company. Кроме того, он доступен по GNU General Public License, версия 3. Для получения дополнительной информации см. Лицензирование Qt.
См. также Веб-сайт ресурсов WebAssembly, Начало работы с Qt для WebAssembly и Удаленные пользовательские интерфейсы с WebGL и WebAssembly.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/wasm.html