由于Qt的文档远未完成,这是设置QWebChannel的方法,并且<script>在HTML页面中添加标签与文档中推荐的标签有什么不同?
Thu*_*orm 10
有不同的选项可以加载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);
Run Code Online (Sandbox Code Playgroud)
利用runJavaScript()来执行代码加载Qt的QWebChannel JS API:
虽然我没有尝试这些方法,但它们仍然有用,因为它们的目的是加载外部JS文件.这里建议的方法之一可能会派上用场,具体取决于您使用的其他库.
<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);
Run Code Online (Sandbox Code Playgroud)
这个答案被认为是Qt文档的补充,所以如果你想添加一些东西,请随意这样做.
版本:Qt 5.6.1
资料来源:
| 归档时间: |
|
| 查看次数: |
3125 次 |
| 最近记录: |