代码之家  ›  专栏  ›  技术社区  ›  rubenvb

我应该使用多个角色还是单个角色将实际属性延迟到包装/公开数据作为其属性的QObject

  •  -1
  • rubenvb  · 技术社区  · 6 年前

    QAbstractListModel

    name, image, enabled, color, editable
    

    比单一角色的实现更好(请原谅我无法想出更好的名字)

    thing
    

    QObject* 与上述 Q_PROPERTY

    model.thing.name
    

    虚拟

    model.name
    

    setData QObject 包装数据的子类(例如,对于特定情况,它在概念上没有意义)。

    3 回复  |  直到 6 年前
        1
  •  1
  •   GrecKo    6 年前

    ComboBox ,如果它有角色,您可以只指定 textRole 组合框 ListView

    QSortFilterProxyModel SortFilterProxyModel library )。

    QObject 事实上,它已经完成,并且在这里有一个非常许可的许可证: Thomas Boutroue's QQmlObjectListModel QList 但它暴露了 QAbstractListModel 角色基于对象的属性,当发出通知信号时,它会发出相应的 dataChanged insertRows

    rowsInserted rowRemoved QVariantList QObjectList QQM对象列表模型

        2
  •  0
  •   dtech    6 年前

    但在 QObject *

    只要属性被正确地实现并且有通知信号,它将在QML中无缝地工作。

    QObject QObject*

    QObject(质量对象)*

    对于所提到的排序和过滤问题,库存解决方案显然不会削减它。如前所述 here

        3
  •  0
  •   derM - not here for BOT dreams    6 年前

    dataChanged -信号。如果你不这样做,你的模型值 QVariantList

    对象属性的更改只会反映在生成的委托中,而依赖于 -信号不会接收更新-除非在对象的属性发生更改时为对象角色触发它。

    QSortFilterProxyModel -信号,如果某个值已更改,它将不会更新筛选器或排序,因为它正在侦听

    数据已更改

    我不知道你是否真的要为这个实现角色。我没有尝试执行 -没有角色的信号。

    Code of QSortFilterProxyModel, that uses the dataChanged -signal