由于Qt的文档还远未完成,这是设置QWebChannel的方法,与在文档中推荐的HTML页面中添加<script>
标记有什么不同?
答案 0 :(得分:7)
可以使用不同的选项加载可在URL qrc:///qtwebchannel/qwebchannel.js
访问的所需脚本:
<强>注意:强>
<强>先决条件:强>
QT += webchannel
添加到您的.pro
文件并运行qmake
使用runJavaScript()
在Qt的QWebChannel JS API中执行代码:
我喜欢的方法,因为它看起来很简单,到目前为止一直很可靠。
请记住,在此代码完成时可能无法设置API,因为runJavaScript()
方法在JS代码执行之前不会阻止当前线程。
QFile apiFile(":/qtwebchannel/qwebchannel.js"); //load the API from the resources
if(!apiFile.open(QIODevice::ReadOnly))
qDebug()<<"Couldn't load Qt's QWebChannel API!";
QString apiScript = QString::fromLatin1(apiFile.readAll());
apiFile.close();
QWebEngineView view; //your custom QWebEngineView
view.page().runJavaScript(apiScript);
使用runJavaScript()
执行代码来加载Qt的QWebChannel JS API:
虽然我没有尝试这些方法,但它们仍然可以工作,因为它们的目的是加载外部JS文件。 建议here之一的方法可能会派上用场,具体取决于您使用的其他库。
在网页中使用<script>
标记:
这是Qt文档推荐的默认方法。它的优点是在页面加载后立即提供API。 这样做的缺点是,如果您不是网站的所有者,则需要修改网页的HTML,这可能很痛苦。
不要忘记在C ++端创建一个QWebChannel对象:
QWebChannel* channel_ = new QWebChannel(view.page());
//attach it to the QWebEnginePage
view.page()->setWebChannel(channel_);
//register a QObject to be exposed to JavaScript
channel_->registerObject(QStringLiteral("jshelper"), this);
这个答案被认为是对Qt文档的补充,所以如果你想添加一些东西,请随意这样做。
版本:Qt 5.6.1
来源: