qt.webChannelTransport 在 QWebEngineView 中未定义
qt.webChannelTransport undefined in QWebEngineView
我 运行 使用 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
有人能告诉我我做错了什么吗?谢谢。
Edit : qt.webChannelTransport 只能通过 Qt5.5 访问吗?当我阅读 QWebEnginePage::setWebChannel
...
的文档时似乎就是这种情况
没错。
QWebChannel
与 QWebEngine
的集成仅在版本 5.5 中可用,正如该模块的主要开发人员 Milian here 所述。
对于有同样问题但使用 Qt 5.5+ 的其他人,请确保您的 .pro
文件中有 QT += webchannel
。
加载前必须设置WebChannel url
您必须 google qwebchannel.js
才能获取默认代码(实际上有很多代码)或以某种方式从 Qt 的目录中获取默认代码。我把我的放在 <qrc>/qtwebchannel/qwebchannel.js
下。然后确保将其作为常规 javascript 导入到 index.html 中,但源为“qrc:/qtwebchannel/qwebchannel.js”。我今天早些时候遇到了你的确切错误,我做了一些修复 - 可能包括那个脚本。
我 运行 使用 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
有人能告诉我我做错了什么吗?谢谢。
Edit : qt.webChannelTransport 只能通过 Qt5.5 访问吗?当我阅读 QWebEnginePage::setWebChannel
...
没错。
QWebChannel
与 QWebEngine
的集成仅在版本 5.5 中可用,正如该模块的主要开发人员 Milian here 所述。
对于有同样问题但使用 Qt 5.5+ 的其他人,请确保您的 .pro
文件中有 QT += webchannel
。
加载前必须设置WebChannel url
您必须 google qwebchannel.js
才能获取默认代码(实际上有很多代码)或以某种方式从 Qt 的目录中获取默认代码。我把我的放在 <qrc>/qtwebchannel/qwebchannel.js
下。然后确保将其作为常规 javascript 导入到 index.html 中,但源为“qrc:/qtwebchannel/qwebchannel.js”。我今天早些时候遇到了你的确切错误,我做了一些修复 - 可能包括那个脚本。