【发布时间】:2015-09-27 07:16:16
【问题描述】:
我正在使用 Qt 开发一个应用程序,但我遇到了一个问题,我想从 JavaScript 调用 QML 函数来处理从我的 HTML 触发的特定事件。
我尝试了以下方法:
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);
}
}
在应用程序启动时,testjs.js 中的 myFunction1() 被调用,它也在我的 QML 中调用 someSlot 函数,但不显示警报。当从 HTML 页面调用 myFunction1() 函数时,仅显示 alert 而不会调用 someSlot 函数。
【问题讨论】:
-
调用Qml函数是什么意思?您想在某个类的某个实例上调用方法吗?只需给该类一个
id,然后以id.method_name调用该方法。该文档包含大量示例。 -
@skypjack 我已经修改了我的问题。你能帮忙吗?
-
app.html根本没有意义。该应用程序是您通过命令式 JavaScript 或声明性绑定对其进行操作的 qml 文件。就是这样。
标签: javascript html function qml