Frage

Ich bin neu in Qt und was ich versuche zu tun:

  1. Erstellen Sie einen Linux-App des Qt-Framework verwenden.
  2. Diese App zeigt einige Web-Seiten aus dem Internet.
  3. Ich mag das JavaScript-API erweitert einige Gerät und Gerät basierend auf Daten zuzugreifen, was bedeutet, können einige Geräte mit Hilfe von JavaScript in Webkit gesteuert werden.

Aber wie füge ich einige benutzerdefinierten Funktionen / Klassen Webkit in Qt?

War es hilfreich?

Lösung

Glücklicherweise gibt es eine Dokumentation zu diesem Thema, schließlich: http: // doc .qt.io / qt-4.8 / QtWebKit-bridge.html

Andere Tipps

Ich habe ein QWebKit Projekt getan, in dem ich eine Brücke zwischen Javascript stablished und meiner C ++ Code.

Um dies zu erreichen ich die Methode verwendet:

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

Auf diese Weise können Sie Methoden des Objekts, das Sie als zweiten Parameter von Javascript zu addToJavaScriptWindowObject passieren auszuführen, das Objekt mit als ersten Parameter angegeben wird.

Hier ein Beispiel:

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()";
         }
 }

Dann von Javascript kann ich tun:

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

Also jedes Mal, wenn ich einen Schlüssel in einem Eingabefeld drücken, god.onChange () ausgeführt, welchen Browser ausführt :: onChange () benutzt.

So können Sie die JS-api vermeiden erstrecken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top