2014-09-09 2 views
5

Я хотел бы использовать Blink (или Webkit, Gecko, KHTML, ... любой похожий механизм компоновки, я не суетливый) как механизм компоновки для рендеринга структурированных данных из программы на C++. И я хочу иметь возможность связывать функции с событиями DOM, чтобы реагировать на взаимодействие с пользователем.Использование Blink в качестве внешнего механизма компоновки - с чего начать?

Другими словами, я не хочу использовать HTTP-протокол, Javascript или даже URI для ресурсов изображения (я планирую напрямую передавать изображения и видеоконтент из базы данных в DOM, предполагая, что это возможно) , Я просто хочу, чтобы механизм компоновки позволял мне собирать дерево DOM с нуля через вызовы функций C++ и позволять мне связывать указатели функций с событиями взаимодействия с пользователем.

У меня возникли проблемы с поиском информации о том, как это сделать. Большая часть информации, похоже, сосредоточена на веб-браузере более высокого уровня, например, встраивание полнофункционального веб-браузера в приложение. Мне интересно, есть ли какой-то «минимальный поднабор» браузера, который я мог бы использовать, и что может быть самым быстрым/простым способом начать работу.

+0

Вы нашли решение? Любая информация? Я также ищу что-то похожее: что-то вроде механизма веб-рендеринга, но мои потребности полностью не связаны с Интернетом (в моем случае, даже DOM, любая другая модель будет в порядке). – AkiRoss

ответ

1

С 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.

1

Вы можете попробовать примеры WebKit Widget here.

Смежные вопросы