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

Posted

技术标签:

【中文标题】使用结构/对象参数从 QT 调用 JavaScript 回调【英文标题】:Invoke JavaScript callback from QT with structure/object argument 【发布时间】:2017-06-14 04:04:59 【问题描述】:

我使用的是 QT 5.5 版本。

我需要使用 Structure/Object 作为参数从 QT 插件调用 javascript 回调函数。我无法修改 html 应用程序,因为它不在我们的范围内。

HTML 应用程序代码 sn-p

var obj1 = document.getElementById('obj1_id'); //QT plugin object 1
var obj2 = document.getElementById('obj2_id'); //QT plugin object 2
obj2.init(obj1,callback); //QT API
function callback(arg1)

if ( obj1 === arg1)
// SUCCESS
else
// FAILURE

QT插件代码sn-p

class::init(QWebElement obj, QString callback)

    //need to Invoke callback with obj argument

谁能帮我解决这个问题?

【问题讨论】:

【参考方案1】:

使用 Qt 信号和插槽 -

在您的 javascript 函数中 -

添加以下行 -

myoperation.alert_script_signal.connect(callback);

在基于Qt框架的C++类-构造函数中,添加下面一行-

注册您的 Javascript 回调 --

view->page()->mainFrame()->addToJavaScriptWindowObject("myoperation", this);

// 现在从该 Qt 类中的某个方法调用回调。

发出 alert_script_signal();

你需要了解一件事,QtWebkit 就是这里的平台。所以,基本上,html、javascript 是在 Qt Webkit 上运行的。

我有一些例子 - http://www.tune2wizard.com/linux-qt-callback-from-c-to-the-javascript-function/

【讨论】:

在我的要求中,我无法修改 javascript 函数,因为 HTML 应用程序不在我们的范围内

以上是关于使用结构/对象参数从 QT 调用 JavaScript 回调的主要内容,如果未能解决你的问题,请参考以下文章

Qt:无法从 javascript 调用共享对象方法/属性

当从外部对象调用方法时,qt 的 gui 线程是不是会在后台生成线程?

qt修正参数怎么调用自定义函数

Qt::浅谈信号槽连接,参数在多线程中的使用

如何从 Qt/C++ 的子函数中调用非静态父函数?

Qt - 由 qt 对象发送的信号调用由接收器对象覆盖的事件函数