【问题标题】:How to forward properties of a child component?如何转发子组件的属性?
【发布时间】:2021-07-07 13:48:51
【问题描述】:

当为某些组件编写包装器时,例如:

MyComponent.qml

ColumnLayout{
    ListView{
        id: listview
    }
}

是否可以在不手动输入所有别名的情况下公开孩子的所有属性(此处为listview)?

这样我就可以做一些类似的事情,如果允许的话:

ColumnLayout{
    MyComponent{
        listview.model: ListModel{  // Here
        }
    }
}

(通过转发它们,或者通过定义指向 listview 的属性(我尝试过,它似乎不起作用......),或者任何其他允许从 listview 绑定属性的方式,就像我会做的那样我正在定义一个ListView)

【问题讨论】:

  • 我认为你想要一个别名? doc.qt.io/qt-5/…
  • 在 MyComponent.qml 中,你可以做property alias listview: listview。这样做是你想要的吗?
  • 哦我没想到我可以给一个id取别名,并用它来引用它的属性,我以为我只能为对象的属性取别名,有趣,我会测试它立即
  • 确实有效!!!将其写为关闭线程的答案

标签: qml qt-quick


【解决方案1】:

您只需为要公开的对象的 id 设置别名。所以在 MyComponent.qml 中,你可以这样做:

ColumnLayout{
    property alias listview: listview
    ListView{
        id: listview
    }
}

然后你可以从其他对象访问它:

ColumnLayout{
    MyComponent{
        listview.model: ListModel{
        }
    }
}

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 2017-10-10
    • 2018-08-02
    • 2019-11-27
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多