I have implemented the HTML-JS, this calls the C++ method from the JS using QtWebkit. I am able to do it successfully. Now, I want to send a callback to JavaScript window from the C++ method. How can I do so?
Here is my code.
#include
#include
#include
#include
#include
#include
class MyJavaScriptOperations : public QObject {
Q_OBJECT
public:
Q_INVOKABLE qint32 MultOfNumbers(int a, int b) {
qDebug() << a * b;
return (a*b);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWebView *view = new QWebView();
view->resize(400, 500);
view->page()->mainFrame()->addToJavaScriptWindowObject("myoperations", new MyJavaScriptOperations);
view->load(QUrl("./shreyas.html"));
view->show();
return a.exec();
}
#include "main.moc"
The Java script is here.
function Multiply()
{
var result = myoperations.MultOfNumbers(document.forms["DEMO_FORM"]["Multiplicant_A"].value, document.forms["DEMO_FORM"]["Multiplicant_B"].value);
document.getElementById("answer").value = result;
}
Multiplicant A:
Multiplicant B:
Result :
解决方案
I don't know if you can somehow call a JS callback directly, but in a pinch you could use your main frame's evaluateJavascript() method to call some JS from C++.
Or you can connect to signals from the JavaScript side, see Qt QWEBview JavaScript callback for some ideas.
A good overview over the connection mechanisms can also be found in the Qt docs