javascript - 在QtWebkit中,如何设置从C++到Javaobject窗口的回调?

标签 javascript c++ qt qtwebkit

我已经实现了 HTML-JS,它使用 QtWebkit 从 JS 调用 C++ 方法。我能够成功地做到这一点。现在,我想从 C++ 方法向 JavaScript 窗口发送回调。我该怎么做?

这是我的代码。

#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"

Java 脚本在这里。

<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> 

最佳答案

我不知道你是否能以某种方式直接调用 JS 回调,但在紧要关头你可以使用你的主框架的 evaluateJavascript()从 C++ 调用一些 JS 的方法。

或者您可以从 JavaScript 端连接到信号,请参阅 Qt QWEBview JavaScript callback一些想法。

关于连接机制的一个很好的概述也可以在 Qt docs 中找到。

关于javascript - 在QtWebkit中,如何设置从C++到Javaobject窗口的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22006667/

相关文章:

qt - QCoreApplication退出不工作

c++ - 使用 stackBefore 更改 QGraphicsItem 堆栈顺序

java - 是否可以从 native 应用程序调用 Java 代码?

javascript - 创建垂直 slider HTML 元素

javascript - 如何在 javascript/Angular4+ 中用垂直线显示分层垂直数据?

javascript - 传递刚刚创建的参数

c++ - 错误 C2059 : syntax error: 'constant' from struct member declarations

c++ - KD树,慢树构建

c++ - 在 Linux 中调试期间是否可以停止单个线程?

javascript - 从调度程序填充 Azure 移动服务