如何从 QML 调用 HTML 函数
Posted
技术标签:
【中文标题】如何从 QML 调用 HTML 函数【英文标题】:How to call HTML function from QML 【发布时间】:2017-04-20 12:23:44 【问题描述】:我想从 QML 调用 html 中的 reload 函数。我可以从 HTML 调用 QML 函数,如下代码所示。
QML 文件:
import QtQuick 2.5
import QtQuick.Window 2.2
import QtWebEngine 1.0
import QtWebChannel 1.0
Window
visible: true
width: 640
height: 480
QtObject
id: myQmlObj
WebChannel.id: "myQmlObj";
signal someSignal(string msg);
function someFoo(msg)
console.log(msg);
WebEngineView
id: view
anchors.fill: parent
url: "myHtml.html"
WebChannel
id: webChannel
registeredObjects: [myQmlObj]
HTML 文件:
<html>
<body>
<script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js"></script>
<script type="text/javascript">
var color = 1;
var webChannel;
function init()
color = 5;
;
function createChannel(lat)
new QWebChannel(qt.webChannelTransport, function (channel)
webChannel = channel.objects.myQmlObj;
webChannel.someSignal.connect("someSignal");
webChannel.someFoo("someFoo");
);
function reload(id)
color = id;
</script>
<script src="someUrl?callback=init"></script>
</body>
</html>
就像我可以从 HTML 调用 someFoo(),但我不能从我的 qml 调用 HTML 的 reload 函数。
【问题讨论】:
【参考方案1】:你可以调用runJavaScript函数如下
function callHtmlFunction()
view.runJavaScript("reload("+ color +")");
【讨论】:
以上是关于如何从 QML 调用 HTML 函数的主要内容,如果未能解决你的问题,请参考以下文章