QML:如何在另一个函数中传递javascript函数作为参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了QML:如何在另一个函数中传递javascript函数作为参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1517字,纯文字阅读大概需要3分钟。
内容图文
![QML:如何在另一个函数中传递javascript函数作为参数](/upload/InfoBanner/zyjiaocheng/787/09c8c8ded9f944f29f7bdb213552f187.jpg)
我有QML代码,例如这段代码
Item {
id:self;
function update(){
var visitFunc = self.applyUpdate;
innerTraversal(self,visitFunc);
}
function reset(){
var visitFunc = self.applyReset;
innerTraversal(self,visitFunc);
}
function innerTraversal(obj, visitFun){
console.log(typeof visitFun);
if(obj!== self && visitFun && typeof visitFun ==="function")
visitFun(obj);
if(hasChilderns(obj)){
var objChilderns = obj.children;
for(var i=0 ; i< objChilderns.length ; i++){
innerTraversal(objChilderns[i]);
}
}
}
function hasChilderns(obj){
if(typeof obj.children !== 'undefined')
return true;
else
return false;
}
function applyReset(obj){
if(typeof obj.reset === 'function')
obj.reset();
}
function applyUpdate(obj){
if(typeof obj.update === 'function')
obj.update();
}
}
在普通的javascript中,这很酷,但是当我在QML中使用这个代码时,访问函数总是有一个未定义的类型,它不起作用.
任何想法如何使这项工作?
解决方法:
在QtQuick 2中,您应该能够使用函数将函数绑定到属性
Item { //<-- declaration
id : item
property variant fun
}
item.fun : Qt.binding(function(){doSomething()}) //<--defintion
item.fun // <-- invocation without braces
所以你可以传递一个带有泛型函数的对象作为参数.
通常,函数重载a也可用于创建泛型函数,例如创建Button类型:
---Button.qml
Item {
function fun() {} //<-- declaration (empty dummy)
MouseArea {
anchors.fill: parent
onClicked: {
fun(); //<-- invocation
}
}
}
---
---main.qml---
Button {
id: button
function fun() { //<-- defintion by overloading
doSomething
}
}
---
单击该按钮将激活其onClick处理程序并实际执行某些操作;).然后,您将使用泛型函数而不是函数本身传递对象.
内容总结
以上是互联网集市为您收集整理的QML:如何在另一个函数中传递javascript函数作为参数全部内容,希望文章能够帮你解决QML:如何在另一个函数中传递javascript函数作为参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。