Qt-Programmierung: Wie Javascript API in Webkit erweitern
-
27-09-2019 - |
Frage
Ich bin neu in Qt und was ich versuche zu tun:
- Erstellen Sie einen Linux-App des Qt-Framework verwenden.
- Diese App zeigt einige Web-Seiten aus dem Internet.
- 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?
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.