通过QSoftFilterProxyModel的项目数

时间:2018-08-06 09:47:41

标签: qt qt5 qtquick2

我正在尝试从QML访问通过QSortFilterProxyModel中的过滤器的项数。我找不到任何减轻这种情况的内置函数。

我的方法是为FilterModel提供如下属性:

Q_PROPERTY(int count READ rowCount NOTIFY countChanged)

并将countChanged信号连接到源模型dataChanged信号。尽管我相信这会奏效,但似乎过于复杂。我想念一种更好的方法吗?

1 个答案:

答案 0 :(得分:1)

没有可悲的是,没有更好的方法了。

要使其工作,您需要将$_SESSION['admin']信号连接到代理模型:countChangedrowsInsertedrowsRemovedmodelReset信号。这就是我在QML代理模型实现中所做的:https://github.com/oKcerG/SortFilterProxyModel/blob/d2772bd6e40ce81a07712c5c320d0ff1b709ce37/qqmlsortfilterproxymodel.cpp#L33-L36

或者,我也尝试使用非侵入式qml模型帮助程序作为概念证明,以友好的方式公开来自layoutChanged的数据。它可以与模型的附加对象一起使用:https://github.com/oKcerG/QmlModelHelper(选中test for the count feature

要查询模型的数量,请执行以下操作:

QAbstractItemModel,它是一个属性,因此您将获得更改通知并对其进行适当的绑定。