gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:46:42 25 4
gpt4 key购买 nike

我已经尝试过与 Vicky Chijwani 对这个问题的回答完全相同 QT QWebEnginePage::setWebChannel() transport object 一切正常,但我无法调用 jshelper 的任何方法或属性。

请看我的代码myclass.h

class MyClass : public QObject
{
Q_OBJECT
public:
MyClass(QObject *parent = 0);
void print();

int num;

signals:

public slots:
};

myclass.cpp

MyClass::MyClass(QObject *parent) : QObject(parent)
{
num=100;
}

void MyClass::print()
{
QMessageBox bx;
bx.exec();
}

mywebengineview.h

class MyWebEngineView : public QWebEngineView
{
public:
MyWebEngineView(QWidget *parent);

MyClass helper;
};

mywebengineview.cpp

MyWebEngineView::MyWebEngineView(QWidget *parent): QWebEngineView(parent)
{
QWebChannel *channel = new QWebChannel(page());
channel->registerObject(QStringLiteral("jshelper"), &helper);load(QUrl::fromLocalFile(QFileInfo("../html/index.html").absoluteFilePath()));
page()->setWebChannel(channel);
}

主窗口.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

view = new MyWebEngineView(this);
view->setGeometry(10, 10, 500, 500);
view->load(QUrl::fromLocalFile(QFileInfo("../html/index.html").absoluteFilePath()));
}

最后是 javascript

<script type="text/javascript">
var jshelper;
document.addEventListener("DOMContentLoaded", function () {
new QWebChannel(qt.webChannelTransport, function(channel) {
alert('ok');
// all published objects are available in channel.objects under
// the identifier set in their attached WebChannel.id property

jshelper = channel.objects.jshelper;
alert( jshelper.num );
jshelper.print();

});
});

</script>

问题是这两行永远不会正确执行

alert( jshelper.num ); // gives 'undefined' message
jshelper.print(); //will not work

我的代码有什么问题,我试图在 4 天左右解决这个问题,但我无法解决它。

最佳答案

我知道在 QWebKit 下,我必须让成员函数看起来像这样:

public slots:
Q_INVOKABLE void print();

关于c++ - Qt:无法从 javascript 调用共享对象方法/属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784400/

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