我在使用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
的医生时,情况似乎是这样的.
发布于 2016-03-04 00:09:24
那就对了。
QWebChannel
与QWebEngine
的集成只能从5.5Version5.5中获得,正如该模块的主要开发人员米利安所说的这里。
发布于 2017-08-11 08:42:10
您必须在加载url之前进行setWebChannel。
发布于 2022-05-25 03:55:44
你必须谷歌qwebchannel.js
来获取默认代码(实际上是很多代码),或者从Qt目录中获取它。我把我的放在<qrc>/qtwebchannel/qwebchannel.js
下。然后确保将它作为常规javascript导入到您的index.html中,但源代码为“qrc:/qtwebchannel/qtwebchannel el.js”。今天早些时候我有你的准确错误,我做了一些修正--可能包括了那个脚本。
https://stackoverflow.com/questions/35624274
复制