将变量分配给属性并在QML中修改实际对象

时间:2014-07-19 16:05:23

标签: javascript c++ qt pointers 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
}
  1. 还没有发生任何事情,所以仍然myvar == false
  2. comp.modify()被称为
  3. 现在comp.object == truemyvar == false
  4. 我应该怎样做才能comp.modify()修改myvar?在C ++中,我使用指针,但QML / JS中没有指针?我使用的是Qt5

    谢谢!

1 个答案:

答案 0 :(得分:1)

开箱即用的双向绑定仍然是一个未解决的问题:

Need two-way Binding support as alternative to alias

另见该报告的副本:

Allow creating two way bindings in QML

你可以找到一个"解决方法"在Jira,但它不是最理想的。基本上,有两种解决方法:

  • 别名,但它是"硬",不是"软",这意味着它无法分解。

  • 双向绑定组件的使用,但它破坏了可重用的组件,并且前后创建两个组件也很烦人。

在您的具体情况下,可能后者适用,因为myvar不是别名。试试这个:

Binding {
    target: myCppClass
    property: "myvar" value: comp.object
    when: comp.completed
}