jjzjj

qsortfilterproxymodel

全部标签

xml - 通过源模型函数从源模型中删除行时 QSortFilterProxyModel 崩溃

我已经创建了一个自定义的QAbstractItemModel派生模型,它包含一组树状层次结构形式的XML数据,这些数据将显示在QTreeView中,如下图所示:http://imageshack.us/photo/my-images/840/xmltreeview.png此模型已成功通过模型测试和一些基本的编辑测试。但是,当我尝试对该模型进行一些过滤以便将模型拆分为几个不同的View时,我遇到了一些问题。我已经尝试过QSortFilterProxyModel并且它经常崩溃。经过一些修复后,它在尝试从模型中删除一行后仍然崩溃。控制台应用程序在发生崩溃时显示这些消息:ratbrQModel

c++ - 为什么不调用继承自 QSortFilterProxyModel 的 filterAcceptsRow?

有一个名为customSortFilterProxyModel的类继承自QSortFilterProxyModel。一个protected函数filterAcceptsRow被覆盖。但是,根本不会调用filterAcceptsRow。问题是什么?谢谢。customSortFilterProxyModel.hclasscustomSortFilterProxyModel:publicQSortFilterProxyModel{Q_OBJECTpublic:customSortFilterProxyModel(QObject*parent);~customSortFilterProxyMo

c++ - 使用 QComboBox C++ 进行过滤

我想创建一个可编辑的QComboBox,它根据搜索查询过滤结果并相应地更新下拉条目。看完HowdoIFilterthePyQtQComboboxItemsbasedonthetextinput?我尝试用C++实现类似的东西。但我现在无法在QComboBox中存储任何内容。即使通过addItem()添加新条目后,总计数仍为0。这是什么原因以及如何使用QSortFilterProxyModel在QComboBox中插入条目?这里是相关的代码片段:SearchBox=newQComboBox(this);SearchBox->setEditable(true);//Tryaddingafew

c++ - 如何使用 QSortFilterProxyModel 过滤只显示子节点及其父节点的树模型?

我有一个从QAbstractItemModel派生的工作树模型,我希望使用QSortFilterProxyModel子类对其进行过滤,以仅显示特定条件的子节点。例如我有以下树:A-B--C1--C1--C1---C2-D-E我想以节点的名称==C1为条件过滤这棵树,并仅显示具有C1的节点及其子节点,如下所示:C1C1C1-C2我已经有一个重新实现了filterAcceptsRow()的子类,它可以部分地做我想做的,但它仍然会显示C1节点的父节点和祖父节点:A-B--C1--C1--C1---C2我认为这是因为要考虑子节点,他们的父节点必须通过filterAcceptsRow()测试,对

c++ - QTreeView - 排序和过滤模型

我正在尝试创建一个显示一些已排序信息的QTreeView。为此,我在View和模型之间使用了一个QSortFilterProxyModel。问题是我想将行数限制为前n行(排序后)。模型中的过滤器函数接收原始sourceRow,因此我无法使用它。我试过链接两个QSortFilterProxyModel:第一个用于排序,第二个用于过滤。但似乎第二个代理模型(过滤)没有收到排序的行....还有其他方法吗?有没有人使用过这种技术(链接2个代理模型)并且有效?谢谢编辑:我试过rowCount但它不起作用。我还尝试链接2个代理模型,但问题是View调用它接收的模型的排序函数。因此,如果第一个代理排

c++ - QTreeView、QFileSystemModel、setRootPath 和 QSortFilterProxyModel 以及用于过滤的 RegExp

我需要显示特定目录的QTreeView,我想让用户可以使用RegExp过滤文件。据我了解Qt文档,我可以使用标题中提到的类来实现这一点://CreatetheModelsQFileSystemModel*fileSystemModel=newQFileSystemModel(this);QSortFilterProxyModel*proxyModel=newQSortFilterProxyModel(this);//SettheRootPathQModelIndexrootModelIndex=fileSystemModel->setRootPath("E:\\example");//

c++ - 如果过滤器严格变窄,避免对 QSortFilterProxyModel::filterAcceptsRow() 的冗余调用

有什么方法可以使QSortFilterProxyModel中的过滤器无效,但表明过滤器已缩小范围,因此应仅在当前可见的行上调用filterAcceptsRow()?目前Qt不这样做。当我调用QSortFilterProxyModel::invalidateFilter()时,我的过滤器从“abcd”更改为“abcde”,创建了一个全新的映射,并且filterAcceptsRow()是调用所有源行,即使很明显到目前为止隐藏的源行将保持隐藏状态。这是来自QSortFilterProxyModelPrivate::create_mapping()中Qt源代码的代码,它调用了我重写的filte

c++ - QSortFilterProxyModel 和延迟填充的 TreeView

我通过子类化QAbstractItemModel实现了一个延迟填充的TreeView。实现看起来像这样:https://gist.github.com/gnufied/db9c4d805e2bb24d8c23(我不是在内联粘贴代码,以免干扰消息传递)它基本上是存储在表中的分层数据的树形表示。现在,我希望用户能够根据列对行进行排序。列是“计数”或“引用计数”。这些值基本上是整数。在我投入QSortFilterProxyModel并且我开始在View中获得大量空行之前,该实现会自行运行。困难的问题是,只有当我有很多行(比如几千行)时才会发生这种情况。实现排序代理的代码是:rootItem=

Qt之QTableView自定义排序/过滤(QSortFilterProxyModel实现,含源码+注释)

文章目录一、效果示例图1.1自定义表格排序示例图1.2自定义表格过滤示例图二、相关理解三、源码CMainWindow.hCMainWindow.cppCMainWindow.uiCSortFilterProxyModel.hCSortFilterProxyModel.cpp总结一、效果示例图1.1自定义表格排序示例图本文过滤条件为行索引取余2等于0时返回true,且从下图中可以看到,奇偶行是各自挨在一起的。1.2自定义表格过滤示例图下图添加两列条件(当前数据大于当前列条件才返回true,且多个列条件为且关系);下方添加条件分别为,”0列,条件值50“,”2列条件值40“,综合下来为0列值大于5