2

我在使用 QWebChannel 从 JavaScript 访问对象时遇到了问题。我目前正在使用 Qt5.4.2。

这是我的 CPP 代码:

myObject::myObject(QWidget *parent)
: QMainWindow(parent)
{

    QWebEngineView* m_pView = new QWebEngineView(this);

    QWebChannel channel;
    channel.registerObject(QString("myObject"), this);

    m_pView->load(QUrl("file:///D:/index.html"));

    setCentralWidget(m_pView);

}

在我的 index.html 中,我包括qwebchannel.js

<script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js"></script>

在我的 javascript 文件中,我试图像这样检索我的对象:

new QWebChannel(qt.webChannelTransport, function(channel) {

var myObject = channel.objects.myObject;

});

但是,我在控制台中收到以下错误:

Error: qt is not defined

我也尝试用它替换它,navigator.qtWebChannelTransport但我得到了:

Error: transport is not defined

有人可以告诉我我做错了什么吗?谢谢。

编辑: qt.webChannelTransport 只能通过 Qt5.5 访问吗?QWebEnginePage::setWebChannel当我阅读...的文档时似乎是这种情况

4

3 回答 3

4

您必须在加载 url 之前设置 WebChannel

于 2017-08-11T16:42:10.933 回答
1

那是正确的。

QWebChannel与模块的主要开发人员 Milian在此处QWebEngine所述,只能从 5.5 版开始集成。

于 2016-03-04T08:09:24.720 回答
0

对于其他有相同问题但使用 Qt 5.5+ 的人,请确保您QT += webchannel.pro文件中有。

于 2017-06-11T22:33:02.070 回答