In QtWebkit, how to install the callback from C++ to Javaobject window?

萝らか妹 提交于 2019-12-13 02:30:28

问题


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 <QtGui/QApplication>
#include <QApplication>
#include <QDebug>
#include <QWebFrame>
#include <QWebPage>
#include <QWebView>

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.

<html>
<head>
<script>


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;

}

</script>
</head>

<body>
<form name="DEMO_FORM">
Multiplicant A: <input type="number" name="Multiplicant_A"><br>
Multiplicant B: <input type="number" name="Multiplicant_B"><br>
Result : <input type="number" id="answer" name="Multiplicant_C"><br>
<input type="button" value="Multiplication_compute_on_C++" onclick="Multiply()">
</form>
</body>
</html> 

回答1:


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



来源:https://stackoverflow.com/questions/22006667/in-qtwebkit-how-to-install-the-callback-from-c-to-javaobject-window

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!