- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要显示特定目录的 QTreeView,我想让用户可以使用 RegExp 过滤文件。
据我了解 Qt 文档,我可以使用标题中提到的类来实现这一点:
// Create the Models
QFileSystemModel *fileSystemModel = new QFileSystemModel(this);
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
// Set the Root Path
QModelIndex rootModelIndex = fileSystemModel->setRootPath("E:\\example");
// Assign the Model to the Proxy and the Proxy to the View
proxyModel->setSourceModel(fileSystemModel);
ui->fileSystemView->setModel(proxyModel);
// Fix the TreeView on the Root Path of the Model
ui->fileSystemView->setRootIndex(proxyModel->mapFromSource(rootModelIndex));
// Set the RegExp when the user enters it
connect(ui->nameFilterLineEdit, SIGNAL(textChanged(QString)),
proxyModel, SLOT(setFilterRegExp(QString)));
启动程序时,TreeView 会正确固定到指定目录。但是一旦用户更改了 RegExp,TreeView 似乎就忘记了它的 RootIndex。删除 RegExp LineEdit 中的所有文本(或输入类似“.”的 RegExp)后,它再次显示所有目录(在 Windows 上这意味着所有驱动器等)
我做错了什么? :/
最佳答案
我收到了 Qt 邮件列表的回复,其中解释了这个问题:
What I think is happening, is that as soon as you start filtering, the index you use as your root does no longer exist. The view then resets to an invalid index as the root index. The filtering works on the whole model tree, not just on the part you see if you start to enter your filter!
I think you are going to need a modified proxy model to do what you want. It should only apply the filtering on items under your root path, but let the root path itself (and everything else) alone.
所以在子类化 QSortFilterProxyModel 和一些 parent() 函数 filterAcceptsRow() 检查之后,这现在确实按预期工作了!
关于c++ - QTreeView、QFileSystemModel、setRootPath 和 QSortFilterProxyModel 以及用于过滤的 RegExp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3212392/
我想做的:从模型中获取项目并使用排序代理按不同的角色对它们进行排序:预期输出: 实际输出包含不应该存在的空行: 您可以看到空行展开了 ListView,甚至可以通过光标进行选择。 以下是产生此错误行为
我想按日期对表格进行排序。问题是它们被解释为字符串,因此我的本地日期格式排序错误,如 26。九月 大于 16。十一月,因为 26 > 16。 无论如何,我已经建立了自己的模型并像这样尝试: QVari
我现在有点绝望。当插入到 View 中时,我的带有子类 QStirngListModel 的模型类工作得很好。当我在模型和 View 之间插入 qt 的 QSortFilterProxyModel 时
我有一个从 QAbstractListModel 继承而来的模型,它有一个 QList 来维护包含 QDateTime 的数据,该数据用于维护此列表。我必须将此数据维护一个小时,即旧数据将从列表中删除
在我的 FilterProxyModel 中,我想从我的 View 中删除第 2 列和第 5 列。所以我是这样做的 proxy_filter->removeColumns(2,1); proxy_fi
我对 Qt 中的此类对象非常缺乏经验,我需要知道是否有办法在过滤后检索数据(用于对它们执行某些操作,例如导出到另一个文件中)。 情况是这样的,我从数据库获取数据并将其存储在 python 列表中,之后
我有一个 QTableWidget,其中包含来自数据库的数据,我想实时搜索其内容(当我输入字母时,他会显示结果)?欢迎任何帮助。非常感谢。 这是我的代码: class Filter: def
QSortFilterProxyModel 似乎限制了可以在 QTableView 中显示的数据量,但仅限于应用过滤器时。似乎限制是数据大小而不是记录数,因为我可以在此处的示例中放入比我看到该行为的实
我正在使用 QSortFilterProxyModel 来过滤来自 QAbstractListModel 的结果。但是,我想返回原始模型中不存在的第一个条目,也就是说,它在某种程度上是人为的。 这是我
假设我有一个列表变量 datalist 存储 10,000 个字符串实体。QTableView 只需要显示其中的一些实体。这就是为什么 QTableView 被指定为 QSortFilterProxy
我正在尝试实现一个可在多个列上排序的表格。 Qt 的 QSortFilterProxyModel 仅支持对一列进行排序(至少在 Qt 4.6.2 中)。 我找到了 this solution由 git
我有一个 QSortFilterProxyModel 的自定义子类。我用我想要的自定义过滤器覆盖了 filterAcceptsRow。然后我这样使用它: proxy = new MyFilterMod
我正在使用继承 QSortFilterProxyModel 的类来仅对 TableView 中的行进行排序。 我启用了 dynamicSort 以确保即使在我加载模型或添加行时我的 View 也保持排
在我的项目中,我在 TreeView 中显示了一个模型。我使用 QSortFilterProxyModel 根据 Qt::UserRole+1 中设置的 ID 对模型进行排序。这将我的列表按“类型”划
我有一个包含 QTreeView 的应用程序其底层模型,比如 MyModel源自 QStandardItemModel .为了从 View 中过滤掉MyModel的一些项目, 我把它插到 QSortF
我有简单的模型 View TreeView ,带有 QSortFilterProxyModel 代理来对列进行排序,并使用 QStandardItemModel 作为模型 在每列中都有字符串排序良好,
我们有一个QSortFilterProxyModel安装在 QTableView和两个(或更多)QLineEdit用于过滤 View (基于这些 QLineEdit 的文本) 在我们看来,我们有一个槽
我有一个QDirModel,其当前目录已设置。然后我有一个 QListView ,它应该显示该目录中的文件。这工作得很好。 现在我想限制显示的文件,因此它只显示 png 文件(文件名以 .png 结尾
我有一个使用 QSortFilterProxyModel 创建表小部件的类。该类将采用字典列表作为数据,然后使用字典的键值填充表列和行。将表设置为按浮点值排序时,表中的多个字段将变得不可见。但是,当我
我正在使用 qsortfilterproxymodel 从 QstandardModel 过滤数据。我能够在我的测试应用程序中实现这个过滤过程,但是当我实时[集成]使用它时,它似乎没有按预期工作。 [
我是一名优秀的程序员,十分优秀!