我遇到了使用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
...
答案 0 :(得分:1)
多数民众赞成。
QWebChannel
与QWebEngine
的集成仅在模块的主要开发人员Milian所述的here版本5.5中提供。
答案 1 :(得分:1)
您必须在加载网址
之前设置WebChannel答案 2 :(得分:0)
对于具有相同问题但使用Qt 5.5+的其他人,请确保QT += webchannel
文件中包含.pro
。