qt.webChannelTransport在QWebEngineView中未定义

时间:2016-02-25 10:13:26

标签: javascript c++ qt qtwebengine

我遇到了使用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 ...

的文档时似乎就是这种情况

3 个答案:

答案 0 :(得分:1)

多数民众赞成。

QWebChannelQWebEngine的集成仅在模块的主要开发人员Milian所述的here版本5.5中提供。

答案 1 :(得分:1)

您必须在加载网址

之前设置WebChannel

答案 2 :(得分:0)

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