从JavaScript调用Qml函数
我正在使用Qt开发一个应用程序,我有一个地方卡住了,我想在一个特定的事件上从JavaScript调用QML函数,这个事件是从我的HTML中触发的 我尝试过以下方法: app.html从JavaScript调用Qml函数,javascript,html,function,qml,Javascript,Html,Function,Qml,我正在使用Qt开发一个应用程序,我有一个地方卡住了,我想在一个特定的事件上从JavaScript调用QML函数,这个事件是从我的HTML中触发的 我尝试过以下方法: app.html <html> <head><title>Myapp</title></head> <script src="testjs.js" type="text/javascript"></script> <body bgcolor="
<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>
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);
}
}
在应用程序启动时,调用testjs.js
中的myFunction1()
,并调用我的QML中的someSlot
函数,但不显示警报。当从HTML页面调用myFunction1()
函数时,只显示alert
,而不调用someSlot
函数。您不能在QML中使用alert()
,因为它没有映射。您有两种解决方案:
BoxDialog
,并从JS启动它您可能想使用Qt的网络频道。它用于使用WebSocket在托管HTML内容和外部资源之间进行通信。有关更多信息,请参见此:
调用Qml函数是什么意思?是否要在类的某个实例上调用方法?只需给该类一个
id
,然后作为id.method\u name
调用该方法。文档中包含大量示例。@skypjack我已修改了我的问题。你能帮忙吗。app.html
毫无意义。应用程序是通过命令式JavaScript或声明性绑定操作的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);
}
}