我正在尝试使用addToJavaScriptWindowObject
mththod从QT调用我的HTML文件中的Javascript函数。我在StackOverflow上遵循了这个post并完全按照接受的答案行事。
我的代码如下
的main.cpp
#include <QApplication>
#include <QDebug>
#include <QtWebKitWidgets/QWebFrame>
#include <QtWebKitWidgets/QWebPage>
#include <QtWebKitWidgets/QWebView>
class MyJavaScriptOperations : public QObject {
Q_OBJECT
public:
Q_INVOKABLE void sumOfNumbers(int a, int b) {
qDebug() << 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("file://C:/programs/index.html"));
view->show();
return a.exec();
}
#include "main.moc"
.pro文件
QT += core
QT += gui
QT += webkit
QT += webkit webkitwidgets
TARGET = QtJsonPostExample
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
OTHER_FILES += \
../../../../programs/index.html
的index.html
<html>
<body>
<script type="text/javascript">
myoperations.sumOfNumbers(12, 23);
</script>
</body>
当我在Qt创建者中运行上述QT项目时,它可以正确编译甚至运行。我看到新窗口打开但输出,在这种情况下,12 + 23 = 35的总和不会显示在Application Output
窗口中。为什么会这样?
为什么即使程序运行正常,我也无法查看输出?
答案 0 :(得分:1)
听起来你忘了启用调试输出。你确定你内置了调试模式吗?尝试添加qDebug()&lt;&lt; “测试”;到你的主要功能检查。