从 Qt 调用 Javascript 函数不显示输出

Posted

技术标签:

【中文标题】从 Qt 调用 Javascript 函数不显示输出【英文标题】:Call to Javascript function from Qt doesnt show output 【发布时间】:2014-01-29 14:48:29 【问题描述】:

我正在尝试使用addTojavascriptWindowObject mwthod 从 QT 调用我的 html 文件中的 Javascript 函数。我在 *** 上关注了这个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 creator 中运行上述 QT 项目时,它可以正确编译甚至运行。我看到新窗口打开了,但输出,在这种情况下,Application Output 窗口中没有显示 12+23= 35 的总和。为什么会这样?

为什么即使程序运行良好,我也无法查看输出?

【问题讨论】:

【参考方案1】:

听起来您忘记启用调试输出。你确定你是在调试模式下构建的吗?尝试添加一个 qDebug()

【讨论】:

以上是关于从 Qt 调用 Javascript 函数不显示输出的主要内容,如果未能解决你的问题,请参考以下文章

从 JavaScript 调用 Qt 插槽

使用结构/对象参数从 QT 调用 JavaScript 回调

使用 GTK+ Webkit Webview(和 Qt WebKit 桥)从 JavaScript/HTML 调用 C++

QT5百度地图开发学习——JavaScript调用qt函数并传参给qt

qt多次调用函数显示多张图片

如何从 PyQT 调用 javascript 函数