Qt QWEBview JavaScript 回调
如何将函数“指针”从 JavaScript 传递到槽?
在 JavaScript 中:
function f1()
{
alert("f1");
}
qtclass.submit(f1);
和在 Qt 中:
public slots:
void submit(void * ptr)
{
(void)ptr;
}
一旦完成一些处理,我需要“f1”函数从 c++ 中的 JavaScript 中触发。另外我事先也不知道函数指针的名称。
How to pass a function "pointer" from JavaScript to a slot?
in JavaScript:
function f1()
{
alert("f1");
}
qtclass.submit(f1);
and in Qt:
public slots:
void submit(void * ptr)
{
(void)ptr;
}
I need the "f1", function to get fired in the JavaScript from the c++, once some processing is done. Also I do not know in advance the name of the function pointer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您应该能够使用 QWebFrame::evaluateJavaScript 方法执行脚本。看看下面的示例是否适合您:
初始化 webview:
loadFinished 信号处理程序:
test.html:
evaluateJavaScript 应触发警报消息框并返回带有 f1 函数结果的 QVariant。
希望这有帮助,问候
you should be able to execute your script using QWebFrame::evaluateJavaScript method. See if an example below would work for you:
initializing webview:
loadFinished signal handler:
test.html:
evaluateJavaScript should trigger an alert message box and return QVariant with f1 function result.
hope this helps, regards
您可以通过使用 Qt 信号以另一种方式解决此问题,如下所示:
在您的 HTML 文件中,您可以连接到此信号,如下所示:
然后您的 C++ 类不需要了解 javascript 函数。
You could solve this in another way, by using Qt signals, as follows:
In your HTML file you can connect to this signal, like this:
Then you C++ class does not need to know about the javascript function.
虽然它并非在所有情况下都有效,但您可以简单地将一个字符串传递到您的插槽中。然后你的槽可以使用evaluateJavaScript(正如serge建议的那样)来调用该函数。
在 Qt 中:
While it wouldn't work in all cases, you could simply pass a string to your slot. Your slot could then use evaluateJavaScript (as serge has suggested) to call the function.
and in Qt:
我这里有一个完整的工作解决方案 - 使用插槽。但是,我无法按照库尔特的建议使信号正常工作。
html 文件的更改是 -
I have one entire working solution here - using slots. However, I couldn't get the signals working as suggested by Kurt.
The html file changes are -