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】:没错。
QWebChannel
与 QWebEngine
的集成仅在 5.5 版中可用,正如该模块的主要开发人员 Milian 所述的 here。
【讨论】:
【参考方案3】:对于其他遇到相同问题但使用 Qt 5.5+ 的人,请确保您的 .pro
文件中有 QT += webchannel
。
【讨论】:
以上是关于qt.webChannelTransport 在 QWebEngineView 中未定义的主要内容,如果未能解决你的问题,请参考以下文章
NOIP 2015 & SDOI 2016 Round1 & CTSC 2016 & SDOI2016 Round2游记