Это непросто. Вот обходной путь, он несовершенен, но достаточно практичен.
Создайте подкласс QObject
, например. Notifier
. Это будет ваш модем из мира веб-сайтов в родной мир. Независимо от того, какое изменение вы хотите реализовать, если флажок установлен, нужно поместить его прямо или вы можете переслать его дальше по цепочке через механизм сигнала/слота.
Внесите экземпляр этого объекта Notifier
на вашу веб-страницу, используя addToJavaScriptWindowObject. Он будет прикреплен к глобальному объекту window
. Теперь используйте DOM's addEventListener, чтобы добавить нового слушателя в этот флажок, слушатель ничего не делает, кроме как вызвать обратный вызов моста, например. window.notifier.doSomething()
. Эта настройка прослушивателя может быть выполнена путем выполнения небольшого кода JavaScript с использованием evaluateJavaScript.
Этот трюк работает, потому что QtWebKit internal bridge понимает экземпляр QObject (хотя и интроспекцию) и делает его свойства и слоты доступными из мира JavaScript.
Спасибо. Я уже читал запись в блоге об этом в KDE Blogs;) –