АК
Александр Кузьминых26 октября 2017 г. 7:57

Запуск приложений Qt в браузере благодаря использованию WebGL плагина

Интересная особенность пришла в Qt 5.10, это новый бэк-энд Qt, который использует WebGL для визуализации. Это позволяет приложениям Qt (с некоторыми ограничениями) работать в веб-браузере, который поддерживает WebGL.

Что это такое?

В новом бэк-энде используется WebGL, что означает Web Graphic Library . WebGL - это API JavaScript для визуализации 2D и 3D-графики в любом совместимом веб-браузере без использования плагинов. API похож на OpenGL ES 2.0 и может использоваться в элементах canvas HTML5.

Новый бэк-энд будет представлен как техническая функция предварительного просмотра в Qt 5.10.0 и включен в версии Alpha и Beta (на данный момент, Qt 5.10.0 является бета-версией на 1ом этапе разработки).

Последний исходный код также доступен в Qt git на http://code.qt.io/cgit/qt/qtwebglplugin.git/ .

Плагин распространяется либо по лицензии GPLv3, либо по коммерческим лицензиям. Обратите внимание, что он недоступен в LGPL. Одним из последствий лицензии GPL является то, что если вы ссылаетесь на нее (даже динамически), код вашего приложения попадает под GPL.


Как это использовать

Предположим, что вы собрали Qt 5.10 с плагином WebGL, плагин будет доступен в качестве бэк-энда. Чтобы использовать его, передайте в ваше приложение опцию -platform webgl , а затем откройте веб-браузер по адресу http://localhost:8080/ .

Плагин поддерживает конфигурацию сетевого порта, используемого встроенным HTTP-сервером. Если вы хотите использовать HTTP-порт по умолчанию, вы можете, например, использовать опцию -platform webgl:port=80 .

Плагин устанавливается в QTDIR /plugins/platforms/libqwebgl.so (в Windows путь аналогичен).

Ограничения

С выпусками Alpha и Beta 1 Qt 5.10.0 плагин WebGL успешно работал в системе Ubuntu Linux 17.04 с использованием браузера Chromium.

Он должен работать с другими браузерами, поддерживающими WebGL, включая мобильные и встроенные браузеры. Предполагается, что вы также можете запустить его в представлении QtWebEngine вместо обычного браузера. Пока что еще нет документации (т.к. всего лишь Beta 1), за исключением нескольких сообщений в блоге.

Плагин поддерживает только приложения QML. Неизвестно, будет ли он поддерживать виджеты. По словам разработчиков, поддержку виджетов будет трудно достичь с хорошей производительностью, потому что они полагаются на растеризацию.

Вы можете подумать, что запуск в браузере означает, что приложение будет работать в песочнице и не иметь доступа к каким-либо ресурсам за пределами браузера, например файлам. Однако в браузере выполняется только рендеринг, а само приложение работает как обычное приложение (однако оно может не работать на том же компьютере, что и на дисплее).

Опыт

С Qt 5.10.0 Beta 1 несколько примеров QML, которые были пробованы, работали достаточно хорошо. Некоторые из них столкнулись с некоторыми проблемами, а некоторые не запускались вообще. Вот скриншоты из нескольких примеров.

Qt Quick Controls Text Editor:

Qt Quick Controls Gallery:

QML Photoviewer:

SameGame:

Заключение

В прошлом решение о разработке приложения, которое может запускаться нативно или в веб-браузере, обычно подразумевало использование значительно отличающихся стратегий (например, использование Qt/QML или использование HTML5). Предполагая, что плагин WebGL становится стабильным и завершенным, он предложит привлекательный подход для разработки веб-приложений используя Qt и для превращения нативного приложения Qt на базе QML в веб-приложение с минимальными усилиями. Тем не менее, имейте в виду последствия лицензирования, когда вы решаете, использовать ли коммерческую или версию с открытым исходным кодом Qt.

Я с нетерпением жду, когда плагин WebGL будет задокументирован и станет более завершенным в выпуске Qt 5.10.0 в конце этого года

Ссылки

  1. http://blog.qt.io/blog/2017/10/09/qt-5-10-beta-released/
  2. http://blog.qt.io/blog/2017/09/13/qt-5-10-alpha-released/
  3. http://blog.qt.io/blog/2017/02/22/qt-quick-webgl-streaming/
  4. http://blog.qt.io/blog/2017/07/07/qt-webgl-streaming-merged

Статья написана: Jeff Tranter | Среда, Октябрь 25, 2017г.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50баллов,
  • Очки рейтинга-4
m
  • molni99
  • 26 октября 2024 г. 1:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
m
  • molni99
  • 26 октября 2024 г. 1:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20баллов,
  • Очки рейтинга-10
Последние комментарии
ИМ
Игорь Максимов22 ноября 2024 г. 11:51
Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 октября 2024 г. 14:37
Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 октября 2024 г. 8:19
Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов5 октября 2024 г. 7:51
Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55 июля 2024 г. 11:02
QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Сейчас обсуждают на форуме
m
moogo22 ноября 2024 г. 7:17
Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
Evgenii Legotckoi
Evgenii Legotckoi24 июня 2024 г. 15:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 ноября 2024 г. 6:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject4 июня 2022 г. 3:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

Следите за нами в социальных сетях