如何仅显示包含QStringList的列的行?

问题描述:

我创建了SortFilterProxyModel以及QStandardItemModelQTreeView。我只需要显示行,其中第二列等于我的QStringList中的一个值。谁能告诉我如何做到这一点?我想到了setFilterFixedString,但这仅适用于单一QString,而不是一个列表...如何仅显示包含QStringList的列的行?

我的代码:

#include "dicomtagsproxymodel.h" 


DicomTagsProxyModel::DicomTagsProxyModel(QObject *parent) : QSortFilterProxyModel(parent) 
{ 
} 

DicomTagsProxyModel::~DicomTagsProxyModel(void) 
{ 
} 

bool DicomTagsProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const 
{ 
    QModelIndex index1 = sourceModel()->index(sourceRow, 1, sourceParent); 

    if (sourceModel()->data(index1).toString() == HOW TO GET THE VALUES OF MY STRINGLIST HERE?) 
} 
+0

覆盖'filterAcceptsRow'并在那里执行过滤。 – peppe

你应该继承QSortFilterProxyModel然后重新实现protected方法virtual bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const。在重新实现的方法中,您可以检查QStringList中的索引值。

+0

我不明白最后一部分:“内部重新实现的方法,你可以检查你的QStringList中的索引值”。如何触发此过滤,因为我的字符串列表中的值随时间而改变? – Engo

+0

然后,您应该添加到子类模型更新字符串列表的一些方法。 – Evgeny