将变量赋值给属性并在QML中修改实际对象
Assign a variable to a property and modify the real object in QML
我创建了一个相当复杂的UI结构。类型bool
在这里只是一个例子
Complicated
{
property bool object
function modify() { object = true }
// complicated and long stuff here
}
我把它像这样放到UI中(myvar
是某个布尔变量,比如,从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
谢谢!
开箱即用的双向绑定仍然是一个未解决的问题:
需要双向绑定支持来替代别名
请参阅该报告的副本:
允许在QML中创建双向绑定
你可以在Jira上找到一个"变通方法",但它不是最优的。基本上,有两种解决方法:
-
别名,但它是"硬"的,而不是"软"的,这意味着它不能被分解。
-
双向绑定组件的使用,但它破坏了一个可重用的组件,并且来回创建两个组件也很烦人。
在您的特定情况下,可能后者适用,因为myvar不完全是别名。试一下:
Binding {
target: myCppClass
property: "myvar" value: comp.object
when: comp.completed
}
相关文章:
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 为什么不能修改对象中的值?另外,我如何改进此链表?
- 使用可变允许修改unordered_set中的对象
- 未定义的对象(〔basic.life〕/8):为什么允许引用重新绑定(和常量修改)
- 如何修改函数中的对象?
- 通过引用在矢量中放置和修改对象
- 为什么我可以通过原始指针而不是shared_ptr来修改对象
- const 方法使用引用修改对象
- 在C 向量中修改对象值的麻烦
- 修改对象也会修改同一类的所有其他对象
- SFML-无法在窗口中修改对象
- 如何使用 *& 修改对象 C++
- 修改对象与修改该对象的副本
- 指针指向矢量调用的方法无法修改对象
- 带函子修改对象的Const函数
- 如何在构造函数中初始化的函数中修改对象大小的2D向量
- 从复制构造函数外部修改对象成员时导致向量内存损坏,但从复制构造函数内部修改时不会
- 如何在不调用成员函数的情况下修改对象
- visualstudio 2012-如何在c++中修改对象已知内存地址
- 在集合内修改对象的可变成员是否安全