Я хотел бы использовать Blink (или Webkit, Gecko, KHTML, … любой подобный механизм компоновки; я не привередлив) в качестве механизма компоновки для рендеринга структурированных данных из программы на C ++. И я хочу иметь возможность привязывать функции к событиям DOM, чтобы реагировать на взаимодействия с пользователем.
Другими словами, я не хочу использовать HTTP-протокол, Javascript или даже URI для ресурсов изображения (я планирую направлять изображения и видеоконтент из базы данных напрямую в DOM, предполагая, что это возможно). Мне просто нужен механизм компоновки, который позволит мне собирать дерево DOM с нуля с помощью вызовов функций C ++ и позволять мне привязывать указатели функций к событиям взаимодействия с пользователем.
У меня много проблем с поиском информации о том, как это сделать. Кажется, что большая часть информации фокусируется на высокоуровневых веб-браузерах, таких как встраивание полнофункционального фрейма веб-браузера в приложение. Мне интересно, есть ли какое-то «минимальное подмножество» движка браузера, которое я мог бы использовать, и какой может быть самый быстрый / простой способ начать работу.
Вы можете попробовать примеры виджетов WebKit Вот.
С Qt WebEngine (который использует моргание) вы получаете веб-браузер, в который вы можете передавать данные из содержащего приложения (описано на: http://doc.qt.io/qt-5/qtwebkit-bridge.html). Вы можете передать документ в виде предварительно сформированного экземпляра QWebEnginePage и сделать объекты из содержащей программы доступными для JavaScript, выполняющегося на странице. Следовательно, можно отображать динамическую веб-страницу, не обращаясь к файлам или URI.
Чтобы использовать этот мост Qt-WebKit, вы должны предоставить данные, к которым вы хотите получить доступ, в виде классов, производных от QObject, и вам потребуется запустить инструмент qmake в процессе сборки, поскольку он опирается на компилятор мета-объектов Qt, поэтому вы немного погружаетесь в мир Qt.
Кроме того, я не уверен, над каким проектом вы работаете, но я должен отметить, что Qt Quick также стоит посмотреть — он выполняет аналогичные действия (выполняет рендеринг графического приложения с использованием веб-браузера, который может содержать JavaScript), но вместо HTML использует хороший JSON-подобный декларативный язык под названием QML. Вы можете увидеть обзор его возможностей здесь: http://doc.qt.io/qt-5/qmlapplications.html .