qt.webChannelTransport 在 QWebEngineView 中未定义

Posted

技术标签:

【中文标题】qt.webChannelTransport 在 QWebEngineView 中未定义【英文标题】:qt.webChannelTransport undefined in QWebEngineView 【发布时间】:2016-02-25 10:13:25 【问题描述】:

我在使用 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的文档时似乎是这种情况...

【问题讨论】:

【参考方案1】:

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

【讨论】:

这不是一个很好的答案。添加更多信息或示例。这更像是一个评论。【参考方案2】:

没错。

QWebChannelQWebEngine 的集成仅在 5.5 版中可用,正如该模块的主要开发人员 Milian 所述的 here。

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于qt.webChannelTransport 在 QWebEngineView 中未定义的主要内容,如果未能解决你的问题,请参考以下文章

NOIP 2015 & SDOI 2016 Round1 & CTSC 2016 & SDOI2016 Round2游记

秋的潇洒在啥?在啥在啥?

上传的数据在云端的怎么查看,保存在啥位置?

在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?

存储在 plist 中的数据在模拟器中有效,但在设备中无效

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据