我创建了一个相当复杂的 UI 结构。 bool
类型在这里只是作为示例
Complicated
{
property bool object
function modify() { object = true }
// complicated and long stuff here
}
然后我像这样将它放入 UI(myvar
是一些 bool 变量,例如,从 C++ 和 myvar == false
中公开)
Column
{
// some UI elements
Complicated { id: comp; object: myvar }
// more UI elements
}
- 还没有发生任何事情,所以还是
myvar == false
comp.modify()
被调用- 现在
comp.object == true
但是myvar == false
我应该怎么做才能使 comp.modify()
修改 myvar
?在 C++ 中我会使用指针,但在 QML/JS 中没有指针?我正在使用 Qt5
谢谢!
最佳答案
开箱即用的双向绑定(bind)仍然是一个 Unresolved 问题:
Need two-way Binding support as alternative to alias
另请参阅该报告的拷贝:
Allow creating two way bindings in QML
您可以在 Jira 上找到“解决方法”,但它不是最佳选择。基本上,有两种解决方法:
别名,但它是“硬”的,不是“软”的,也就是不可分解。
two-way Binding 组件的使用,但它破坏了一个可重用的组件,而且来回创建两个组件也很烦人。
在您的特定情况下,后者可能适用,因为 myvar 不是一个别名。试试这个:
Binding {
target: myCppClass
property: "myvar" value: comp.object
when: comp.completed
}
关于javascript - 给一个属性赋一个变量,修改QML中的真实对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24842286/