- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个从 QAbstractListModel
继承而来的模型,它有一个 QList
来维护包含 QDateTime
的数据,该数据用于维护此列表。我必须将此数据维护一个小时,即旧数据将从列表中删除。这基本上是 FIFO 列表。我有一个代理模型(QSortFilterProxyModel
的子类)来对数据进行排序。每当数据发生变化时,代理模型就会丢失索引并显示未过滤的数据。以下是执行此操作的代码片段。
emit layoutAboutToBeChanged();
beginInsertRows(QModelIndex(), 0, 1); //we are prepending
m_entries.prepend(e);
endInsertRows();
emit layoutChanged();
这似乎解决了问题。但是,如果在 View (QTreeView
) 上选择了某些内容,则应用程序会在一段时间后崩溃并出现大量此类错误消息。
QSortFilterProxyModel: index from wrong model passed to mapFromSource
QSortFilterProxyModel: index from wrong model passed to mapFromSource
QSortFilterProxyModel: index from wrong model passed to mapFromSource
调试器上的堆栈跟踪显示 mouseSelectEvent
和其他需要 QModelIndex
的函数。
很抱歉这个问题很长。有人可以帮忙解决这个问题吗?
谢谢。
最佳答案
beginInsertRows 的文档说 void QAbstractItemModel::beginInsertRows(const QModelIndex & parent, int first, int last)
这意味着当你只插入一个项目时,参数 first = last = 0。在你的代码片段,您使用 m_entries.prepend(e)
插入一项,但您不关心要插入两项:beginInsertRows(QModelIndex(), 0, 1);
接收到已插入两行的信号,当它要求插入第二行时 - 砰!访问冲突。您需要的是 beginInsertRows(QModelIndex(), 0, 0);
。另外,我认为您不需要 emit layoutToBeChanged()
和 emit layoutChanged();
但我不确定。
关于c++ - QSortFilterProxyModel 崩溃的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18364632/
我想做的:从模型中获取项目并使用排序代理按不同的角色对它们进行排序:预期输出: 实际输出包含不应该存在的空行: 您可以看到空行展开了 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 过滤数据。我能够在我的测试应用程序中实现这个过滤过程,但是当我实时[集成]使用它时,它似乎没有按预期工作。 [
我是一名优秀的程序员,十分优秀!