Ausführen von Qt-Anwendungen in einem Browser mit dem WebGL-Plug-in

Ein interessantes Feature von Qt 5.10 ist ein neues Qt-Backend, das WebGL zum Rendern verwendet. Dadurch können Qt-Anwendungen (mit einigen Einschränkungen) in einem Webbrowser ausgeführt werden, der WebGL unterstützt.

Was ist das?

Das neue Backend verwendet WebGL, was für Web Graphic Library steht. WebGL ist eine JavaScript-API zum Rendern von 2D- und 3D-Grafiken in jedem kompatiblen Webbrowser ohne die Verwendung von Plugins. Die API ähnelt OpenGL ES 2.0 und kann auf HTML5- Canvas -Elementen verwendet werden.

Das neue Backend wird als technische Vorschaufunktion in Qt 5.10.0 eingeführt und in Alpha- und Beta-Versionen enthalten sein (derzeit ist Qt 5.10.0 eine Beta-Version in Phase 1).

Der neueste Quellcode ist auch in Qt git unter verfügbar http://code.qt.io/cgit/qt/qtwebglplugin.git/ .

Das Plugin wird entweder unter der GPLv3-Lizenz oder unter kommerziellen Lizenzen vertrieben. Bitte beachten Sie, dass es in der LGPL nicht verfügbar ist. Eine der Folgen der GPL-Lizenz ist, dass Ihr Anwendungscode von der GPL abgedeckt wird, wenn Sie (auch dynamisch) darauf verlinken.


Wie man es benutzt

Nehmen wir an, Sie haben Qt 5.10 mit dem WebGL-Plugin erstellt, das Plugin wird als Backend verfügbar sein. Um es zu verwenden, übergeben Sie die Option -platform webgl an Ihre Anwendung und öffnen Sie dann einen Webbrowser unter http://localhost:8080/ .

Das Plugin unterstützt die Konfiguration des Netzwerkports, der vom integrierten HTTP-Server verwendet wird. Wenn Sie den Standard-HTTP-Port verwenden möchten, können Sie beispielsweise die Option -platform webgl:port=80 verwenden.

Das Plugin wird in QTDIR /plugins/platforms/libqwebgl.so installiert (der Pfad ist unter Windows ähnlich).

Grenzen

Mit den Alpha- und Beta-1-Versionen von Qt 5.10.0 funktionierte das WebGL-Plugin erfolgreich auf einem Ubuntu Linux 17.04-System mit dem Chromium-Browser.

Es sollte mit anderen Browsern funktionieren, die WebGL unterstützen, einschließlich mobiler und eingebetteter Browser. Es wird empfohlen, dass Sie es auch in einer QtWebEngine-Ansicht anstelle eines normalen Browsers ausführen können. Es gibt noch keine Dokumentation (weil es nur Beta 1 ist), außer ein paar Blogbeiträgen.

Das Plugin unterstützt nur QML-Anwendungen. Es ist nicht bekannt, ob Widgets unterstützt werden. Laut den Entwicklern wird die Widget-Unterstützung bei guter Performance nur schwer zu erreichen sein, da sie auf Rasterung setzen.

Sie könnten denken, dass die Ausführung in einem Browser bedeutet, dass die Anwendung in einer Sandbox ausgeführt wird und nicht auf Ressourcen außerhalb des Browsers zugreifen kann, z. B. Dateien. Der Browser rendert jedoch nur, und die Anwendung selbst wird wie eine normale Anwendung ausgeführt (jedoch darf sie nicht auf demselben Computer wie das Display ausgeführt werden).

Ein Erlebnis

Ab Qt 5.10.0 Beta 1 haben die wenigen QML-Beispiele, die ausprobiert wurden, einigermaßen gut funktioniert. Einige von ihnen stießen auf einige Probleme und andere starteten überhaupt nicht. Hier sind Screenshots von mehreren Beispielen.

Qt Quick Controls Texteditor:

Qt-Schnellsteuerungsgalerie:

QML Photoviewer:

SameGame:

Fazit

In der Vergangenheit wurden bei der Entscheidung, eine Anwendung zu entwickeln, die nativ oder in einem Webbrowser ausgeführt werden kann, normalerweise sehr unterschiedliche Strategien verwendet (z. B. Verwendung von Qt/QML versus Verwendung von HTML5). Unter der Annahme, dass das WebGL-Plugin stabil und vollständig wird, bietet es einen attraktiven Ansatz für die Entwicklung von Webanwendungen mit Qt und für die Umwandlung einer QML-basierten nativen Qt-Anwendung mit minimalem Aufwand in eine Webanwendung. Beachten Sie jedoch die Auswirkungen auf die Lizenzierung, wenn Sie entscheiden, ob Sie die kommerzielle oder die Open-Source-Version von Qt verwenden möchten.

Ich freue mich darauf, dass das WebGL-Plug-in später in diesem Jahr in Qt 5.10.0 dokumentiert und vollständiger wird

Links

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

Artikel geschrieben von: Jeff Tranter Mittwoch, 25. Oktober 2017

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken