gpt4 book ai didi

qt - 如何将 “this” 从 QML 元素传递给 JS 函数

转载 作者:行者123 更新时间:2023-12-04 10:52:13 25 4
gpt4 key购买 nike

类似于 this在 C++ 中使用关键字,我想要一个 QML 元素将自身传递给 JS 函数,或者让它将另一个元素上的属性设置为自身。这可能吗?

例如:

Rectangle{
id:theParent

property var theElement

SomeElement{
id:theChild
MouseArea {
anchors.fill:parent
onClicked: {
someJsFunction(*whatGoesHere*)
parent.theElement=*whatGoesHere*
}
}

或者,考虑一下:
Rectangle{
id:theParent

property var theElement

SomeElement{
id:theChild
}

然后,在 SomeElement.qml 中:
Rectangle{
MouseArea {
anchors.fill:parent
onClicked: {
someJsFunction(*whatGoesHere*)
parent.theElement=*whatGoesHere*
}
}
}

在这种情况下, *whatGoesHere*将是调用这些元素的 SomeElement 的实例。

这在 QML 中可能吗?我认为 id属性是有道理的,但根据文档,您不能查询 id 的值场,还有 id如果我的 SomeElement 将不可用在单独的文件中进行了描述,并且上面的 whatGoesHere 处理出现在该单独的文件中,而不是在特定实例中。

最佳答案

我有两个互补的建议:

首先,对于单次使用,传递 ID,因为它基本上是指向 item 的指针:

MouseArea {
id: myClicker;
onClicked: { callFunc (myClicker); }
}

然后,如果您需要多个项目来共享此行为,则意味着您正在使用 MVC,因此 ID 将完全相同:
Repeater {
model: 100;
delegate: MouseArea {
id: myClicker;
onClicked: { callFunc (myClicker); }
}
}

那是经典部分。

但是,如果您创建自己的组件,要做得更好,请记住创建一个能够正确完成“此”工作的“自”辅助属性:
MouseArea { // component root definition
id: base;

property var self : base; // bind self on the I
}

然后像这样使用它:
Repeater {
model: 100;
delegate: MyComponent {
onClicked: { callFunc (self); }
}
}

经常使用它!

关于qt - 如何将 “this” 从 QML 元素传递给 JS 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19782933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com