我已经实现了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>
答案 0 :(得分:1)
我不知道你是否能以某种方式直接调用JS回调,但是在紧要关头你可以使用主框架的evaluateJavascript()方法从C ++中调用一些JS。
或者您可以连接到JavaScript方面的信号,请参阅Qt QWEBview JavaScript callback了解一些想法。
关于连接机制的一个很好的概述也可以在Qt docs
中找到