javascript - 给一个属性赋一个变量,修改QML中的真实对象

标签 javascript c++ qt pointers qml

我创建了一个相当复杂的 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
}
  1. 还没有发生任何事情,所以还是 myvar == false
  2. comp.modify() 被调用
  3. 现在 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/

相关文章:

javascript - 多个 Backbone.js 集合选项?

c++ - 使用模板特化、默认参数和 VS2013 编译错误

c++ - (多操作系统)获取可执行路径

qt - 与 OpacityMask 相反

javascript - 将一个居中标签添加到 donut chartist-js

javascript - 关于 Javascript 提升的困惑

c++ - QNetworkReply::NetworkError(ProtocolInvalidOperationError) 它是什么以及如何修复它?

qt - 如何在QML中访问中继器的子代的属性?

javascript - vendor Assets 是否应该包含在 Bower + Rails 的版本控制中?

c++ - 使用 Eclipse CDT 进行 Pintool 开发