Qt для WebAssembly
WebAssembly — это двоичный формат, который позволяет использовать защищённые исполняемые фрагменты кода в веб-страницах. Этот формат практически столь же быстр, как и машинный код, и сейчас поддерживается всеми основными веб-браузерами.
Qt для WebAssembly — это платформенный плагин, который позволяет создавать приложения Qt, которые можно интегрировать в ваши веб-страницы. Он не требует установки на стороне клиента и снижает использование ресурсов на стороне сервера.
Начало работы с Qt для WebAssembly
Установка Emscripten
emscripten — это инструментарий для компиляции в asm.js и WebAssembly. Он позволяет запускать Qt в веб-приложениях с почти родной скоростью без плагинов.
Для получения дополнительной информации о получении SDK Emscripten и установке и активации Emscripten для вашей версии Qt обратитесь к документации Emscripten.
После установки emscripten должен быть доступен в вашем пути. Проверьте это с помощью следующей команды:
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)
- Qt 5.15: 1.39.8
Используйте emsdk для установки определённых emscripten версий. Например, для установки для Qt 5.15 введите:
- ./emsdk install 1.39.8
- ./emsdk activate --embedded 1.39.8
После установки emscripten должен быть доступен в вашем пути. Проверьте это с помощью следующей команды:
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
- Wiki 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.15/wasm.html