1

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> 
4
  • Shreyas, why is it tagged with qtdbus? Also, please note that Qt and QT are different projects. Commented Feb 25, 2014 at 6:52
  • what is the difference between qt and QT? Commented Feb 25, 2014 at 7:42
  • 1
    Check the tagwiki. Commented Feb 25, 2014 at 7:45
  • Ok, got it. Now, I am waiting for the answer. If I can make a callback, then the UI part is complete. This will give more value to webkit then in the context of JS. Commented Feb 25, 2014 at 8:56

1 Answer 1

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

Sign up to request clarification or add additional context in comments.

1 Comment

Would you mind answering my question here - stackoverflow.com/questions/22060192/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.