gpt4 book ai didi

javascript - 无法使用QtWebkit通过javascript访问Qt对象方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:36 25 4
gpt4 key购买 nike

使用 QtWebkit 的 javascript 桥,我创建了一个类来将我的 web 框架中的数据与我的其余 Qt 代码连接起来。它识别对象,但不识别其方法。

//executed with main window constructor
void MainWindow::initJavascriptInterface(){

webInterfacer JSInterface;
QWebFrame *frame = ui->webView->page()->mainFrame();
frame->addToJavaScriptWindowObject("sender",&JSInterface);

}

该类只有一个名为 getInfo() 的公共(public)插槽(我知道这个名字很烂,但它是为了测试,我尝试使用不同的函数名称以防发生冲突)。

网络接口(interface).h

#ifndef WEBINTERFACER_H
#define WEBINTERFACER_H

#include <QObject>

class webInterfacer : public QObject
{

Q_OBJECT

public:
explicit webInterfacer();
~webInterfacer();

public slots:
void getInfo();

signals:
//signal to emit when getInfo is called
void openPopup(QString,QString);
};

#endif // WEBINTERFACER_H

我尝试在 getInfo 中使用不同的内容,即使是一个空函数,也无法识别。

在我的 HTML header (jQuery) 中:

$(document).ready(function(){
if(window.sender){
alert("obj: " + typeof sender); //shows "obj: object"
alert("getInfo: " + typeof sender.getInfo); //shows "getInfo: undefined"
}
}

最佳答案

webInterFacer JS 接口(interface);您的 webInterfacer 对象是一个局部变量。一旦它超出范围即被销毁,即一旦您退出函数 initJavaScriptInterface();

修复

void MainWindow::initJavascriptInterface(){

webInterfacer* JSInterface = new webInterfacer();
QWebFrame *frame = ui->webView->page()->mainFrame();
frame->addToJavaScriptWindowObject("sender",JSInterface);

关于javascript - 无法使用QtWebkit通过javascript访问Qt对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5979719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com