QML是否支持像私有属性那样的访问说明符?

22

我想知道在QML中是否有像C ++中的私有属性访问说明符这样的概念。

如果没有,我想知道如果我在我的QML组件中有大约10个属性,但我只想限制访问其中的2个属性,我们该怎么做。

1个回答

36

QML本身没有此内置功能,但这是Qt Quick组件的方法:

Item {
  property int sum: internal.a + internal.b
  QtObject {
    id: internal
    property int a: 1
    property int b: 2
  }
}

'internal'对象的属性在Item以外是不可见的,但可以在Item内自由使用。


必须使用QtObject吗?还是可以通过这种方法在ListView内部声明私有属性? - KernelPanic
2
你可以使用任何元素来替代QtObject。 - Pavel Osipov
1
从文档中可以看到:“如果您需要一个非常轻量级的类型来封装一组自定义属性,创建QtObject可能会很有用” - 因此,在这里使用QtObject是最好的选择。 - FourtyTwo
@FourtyTwo - 是的,非常轻量级,当完全为空时只有大约400-500字节。如果有另一个内部对象,最好使用实际需要的东西,而不是浪费任何额外的内存在QtObject上。顺便说一句,在QML中没有私有说明符真的很愚蠢,实现这个功能并不难。 https://bugreports.qt.io/browse/QTBUG-60029?filter=-2 - dtech
2
虽然我喜欢你的答案,因为它回答了原始问题,但我认为最好使用 ___ 前缀作为约定,以避免在每个组件中都有 QtObject 的额外开销。 - pooya13

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接