【发布时间】:2023-01-17 19:21:37
【问题描述】:
我试图将一个组件本身分配给它的一个属性,然后将该属性传递给外部文件中的一个函数 (import "Scripts.js" as Scripts)
我首先想到的是(在我看来)最明显的方法:
//MyComponent.qml
Item {
id: comp
// property var target: comp
// doesn't work either
property var target: this
...
onActiveFocusChanged: {
// Scripts.foo(this)
// and Scripts.foo(tf)
// don't work either
if(this.activeFocus) {
Scripts.foo(target)
}
}
}
但这不起作用(将 activeFocus 提供给组件后窗口崩溃)。
所以,我默认将 undefined 分配给目标:
...
property var target: undefined
...
然后在声明时分配组件本身:
MyComponent {
id: myComponent
...
target: this
// target: myComponent
// also works
...
}
当 activeFocus 被触发时,一切正常。有人可以告诉我为什么/我做错了什么吗?
不可能将组件本身分配给组件属性?
以及为什么在宣布后并非不可能做到这一点?
【问题讨论】:
-
您可以使用
id属性作为指向实例的指针,我不太确定this是否按您预期的方式工作。 -
@folibis 谢谢你的评论。我已经尝试使用
id而不是this关键字,但这也不起作用。
标签: javascript qt qml qt5