在树状图中筛选模型



这是一个已经解决的问题的后续问题。


我的模型有一些自定义函数,这些函数在我的树视图中被调用。例如,我的ItemModel类中有两个自定义函数:

class ItemModel : public QAbstractItemModel
{
// ...
Q_INVOKABLE void addExpandedItem(const QModelIndex &index);
Q_INVOKABLE void removeExpandedItem(const QModelIndex &index);
}

ParentClass:中使用ItemModel类作为sceneModel属性

class ParentClass : public QObject
{
Q_OBJECT
Q_PROPERTY(ItemModel * sceneModel READ sceneModel CONSTANT)
private:
ItemModel *m_sceneModel;
}

在我的QML树视图中,我调用/那些自定义函数,如:

TreeView {
model: parentClass.sceneModel
selection: ItemSelectionModel {
model: parentClass.sceneModel
}
onExpanded: {
model.addExpandedItem(index) // Calling custom function
}
onCollapsed: {
model.removeExpandedItem(index) // Calling custom function
}
}

现在,当我打算像原来的问题中所描述的那样通过QSortFilterProxyModel过滤我的模型时,我在通过QSortFilterProxyModel代理模型调用那些自定义函数时遇到了问题。我收到这样的错误:

qrc:/.../...Tree.qml:191: TypeError: Property 'addExpandedItem' of object QSortFilterProxyModel(0x1f197c082c0) is not a function

因此,我想知道如何通过QSortFilterProxyModel代理模型调用我的模型的自定义函数。

在父类的Q_PROPERTY中将其更改为QVariant。Getter函数应该像这样返回类实例:

return QVariant::fromValue(m_sceneModel);

当我这样做的时候,它是有效的。此外,您确定TreeViewQModelIndex传递给您的方法吗?据我所知,它只通过int,而真正的模型索引只能通过C++data函数访问。

相关内容

  • 没有找到相关文章

最新更新