我正在使用Qt开发一个应用程序而且我被困在某一点上,我想从JavaScript调用来自我的HTML的特定事件的QML函数。
我尝试了以下方法:
app.html
<html>
<head><title>Myapp</title></head>
<script src="testjs.js" type="text/javascript"></script>
<body bgcolor="orange">
<p id="demo" onclick="myFunction1()">Click me to change my text color.</p>
</body>
</html>
testjs.js
function myFunction1() {
alert("alert");
someComponent.someSlot(30);
someComponent.someSlot(31);
}
main.qml
import 'testjs.js' as JavascriptObject
ApplicationWindow {
id: someComponent
visible: true
x: initialX
y: initialY
width: initialWidth
height: initialHeight
title: webView.title
WebView {
id: webView
anchors.fill: parent
url: initialUrl
}
function someSlot(v) {
console.log("Signal received " + v);
}
Component.onCompleted: {
JavascriptObject.myFunction1(41);
}
}
在myFunction1()
中的应用程序启动testjs.js
被调用,它在我的QML中调用someSlot
函数,但不显示警报。从HTML页面调用myFunction1()
函数时,仅显示alert
并且不调用someSlot
函数。
答案 0 :(得分:0)
您无法在QML中使用alert()
,因为它未映射。你有两个解决方案:
console.log
BoxDialog
,并从JS启动它。答案 1 :(得分:0)
您可能想要使用Qt的WebChannel。它用于使用WebSockets在托管的HTML内容和外部资源之间进行通信。有关更多信息,请参阅此处: