我正在尝试从QML访问通过QSortFilterProxyModel
中的过滤器的项数。我找不到任何减轻这种情况的内置函数。
我的方法是为FilterModel提供如下属性:
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
并将countChanged
信号连接到源模型dataChanged
信号。尽管我相信这会奏效,但似乎过于复杂。我想念一种更好的方法吗?
答案 0 :(得分:1)
没有可悲的是,没有更好的方法了。
要使其工作,您需要将$_SESSION['admin']
信号连接到代理模型:countChanged
,rowsInserted
,rowsRemoved
和modelReset
信号。这就是我在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
,它是一个属性,因此您将获得更改通知并对其进行适当的绑定。