2014-09-09 22 views
5

Ich möchte Blink (oder Webkit, Gecko, KHTML, ... jede ähnliche Layout-Engine; ich bin nicht pingelig) als Layout-Engine für das Rendern strukturierter Daten aus einem C++ - Programm verwenden. Und ich möchte in der Lage sein, Funktionen an DOM-Ereignisse zu binden, um auf Benutzerinteraktionen zu reagieren.Verwenden von Blink als Front-End-Layout-Engine - wo soll ich anfangen?

Mit anderen Worten, ich möchte nicht das HTTP-Protokoll, Javascript oder sogar URIs für Bild-Ressourcen verwenden (ich plane, Bilder und Video-Inhalte aus einer Datenbank direkt in das DOM zu leiten, vorausgesetzt, das ist möglich) . Ich möchte nur eine Layout-Engine, mit der ich den DOM-Baum von Grund auf über C++ - Funktionsaufrufe zusammenstellen kann und ich Funktionszeiger an Benutzerinteraktionsereignisse binden kann.

Ich habe eine Menge Probleme bei der Suche nach Informationen, wie dies zu tun ist. Viele Informationen scheinen sich auf Web-Browsing-Themen auf höherer Ebene zu konzentrieren, wie das Einbetten eines voll ausgestatteten Webbrowser-Frames in eine Anwendung. Ich frage mich, ob es eine Art "minimaler Teilsatz" einer Browser-Engine gibt, die ich verwenden könnte und was der schnellste/einfachste Weg ist, um loszulegen.

+0

Haben Sie eine Lösung gefunden? Irgendwelche Informationen? Ich suche auch etwas ähnliches: etwas wie eine Web-Rendering-Engine, aber meine Bedürfnisse sind völlig unabhängig vom Web (in meinem Fall nicht einmal DOM, jedes andere Modell wäre in Ordnung). – AkiRoss

Antwort

1

Mit der Qt WebEngine (die blinkt) erhalten Sie einen Webbrowser, in den Sie Daten aus der enthaltenen Anwendung einspeisen können (beschrieben unter: http://doc.qt.io/qt-5/qtwebkit-bridge.html). Sie können das Dokument als vorgefertigte QWebEnginePage-Instanz angeben, und Sie können Objekte aus dem enthaltenen Programm für JavaScript aktivieren, das auf der Seite ausgeführt wird. Daher ist es möglich, eine dynamische Webseite anzuzeigen, ohne jemals auf Dateien oder URIs zuzugreifen.

Um diese Qt-WebKit-Bridge verwenden zu können, müssen Sie die Daten, auf die Sie zugreifen wollen, als QObject-abgeleitete Klassen bereitstellen und das qmake-Tool in Ihrem Buildprozess ausführen, da es auf der Qt-Meta- Object Compiler, damit du ein bisschen in die Welt von Qt eingesogen wirst.

Auch ich bin mir nicht sicher, an welchem ​​Projekt Sie arbeiten, aber ich sollte erwähnen, dass Qt Quick auch einen Blick wert ist - es macht eine ähnliche Anwendung (rendert eine grafische Anwendung mit einem Webbrowser, der JavaScript enthalten kann) , aber statt HTML verwendet es eine nette JSON-ähnliche deklarative Sprache namens QML. Sie können hier einen Überblick über seine Fähigkeiten sehen: http://doc.qt.io/qt-5/qmlapplications.html.

1

Sie können versuchen, WebKit Widget Beispiele here.