Вопрос

Я новичок в Qt и что я пытаюсь сделать:

  1. Создайте приложение Linux, используя Framework QT.
  2. Это приложение отображает некоторые веб-страницы из Интернета.
  3. Я хочу расширить JavaScript API для доступа к некоторым данным устройств и на основе устройств, что означает, что некоторые устройства могут контролироваться с помощью JavaScript в WebKit.

Но как добавить некоторые настроенные функции / классы в WebKit в Qt?

Это было полезно?

Решение

К счастью, существует некоторая документация на этом, наконец: http://doc.qt.io/qt-4.8/qtwebkit-bridge.html.

Другие советы

Я сделал проект QWebkit, в котором я поставил мост между JavaScript и My C ++.

Для достижения этого я использовал метод:

this->page()->mainFrame()->addToJavaScriptWindowObject( "god", this );

Это позволяет выполнять методы пропускаемых вами объекта для AddJavascriptWindowObject в качестве второго параметра от JavaScript, используя объект, указанный в качестве первого параметра.

Вот пример:

class Browser : public QWebView
{
     Q_OBJECT
     public:
         Browser( QWidget* parent=0 )
         {
            connect( this->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),    this,   SLOT(onJavaScriptWindowObjectCleared()) );
         }

     public slots:
         void onJavaScriptWindowObjectCleared()
         {
          //   QString script = "console.log('init!');";
          //   this->page()->mainFrame()->evaluateJavaScript( script );
         }

         void onChange()
         {
             qDebug() << "Browser::onChange()";
         }
 }

Затем, от JavaScript я могу сделать:

$('input:text').keydown( god.onChange );

Поэтому каждый раз, когда я нажимаю клавишу в поле ввода, выполняется Bod.onchange (), который выполняет браузер :: oonChange () слот.

Таким образом, вы избегаете расширения API JS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top