c++ - 如何只显示包含来自 QStringList 的 QString 的列的行?

标签 c++ qt qstandarditemmodel qsortfilterproxymodel

我创建了一个 SortFilterProxyModel 以及一个 QStandardItemModel 和一个 QTreeView。我只需要显示行,其中第二列等于我的 QStringList 中的值之一。谁能告诉我该怎么做?我想到了 setFilterFixedString,但这只适用于单个 QString,不适用于 List...

我的代码:

#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?)
}

最佳答案

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

关于c++ - 如何只显示包含来自 QStringList 的 QString 的列的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34896876/

相关文章:

c++ - 让 C++ 在 Eclipse 中编译

c++ - Qt-如何实现一个可读写的QSqlQueryModel?

c++ - 新的 __LINE__ 什么时候开始?

c++ - 如何隐藏 QSplitter 小部件中的句柄?

qt - 部署 Qt 共享库时替换 RPATH

c++ - 通过项目数据从 QStandardItemModel 中查找/删除一行

c++ - 如何从 QStandardItemModel 中删除所有项目

qt4 - 提取QHeaderView的文本

c++ - 通过对常量的引用将元素传递给 lambda

vscode : error: no matching constructor for initialization of 'std::thread' 中的 C++