首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >代理和fetchMore()/canFetchMore()后面的Qt模型

代理和fetchMore()/canFetchMore()后面的Qt模型
EN

Stack Overflow用户
提问于 2014-01-25 09:16:13
回答 1查看 2.3K关注 0票数 5

当具有增量数据获取的主数据模型位于代理或代理链之后时,我很想知道视图的行为。

像取消分组代理(例如:http://lynxline.com/jongling-qt-models/)这样的项重排的代理应该如何实现对fetchMore()、/canFetchMore()的支持?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-25 10:37:34

通过查看QSortFilterProxyModel的消息来源,我可以得出结论:

  • QSortFilterProxyModel允许访问已经获取的行。调用rowCountdata等将表现为源表中没有更多的数据。
  • 默认情况下,QSortFilterProxyModel (和QAbstractProxyModel )将canFetchMorefetchMore调用路由到源模型的相应方法。

这意味着当您向下滚动一个从动态获取表中填充QSortFilterProxyModel的视图时,它将被来自源模型的新数据动态填充。然而,您不能确定新的项目将被添加到末尾。相反,当向下滚动表时,它的数据可能会完全改变。根据当前的排序和筛选设置,可以在任何地方添加新行。

当不提供对canFetchMorefetchMore的额外支持时,所有代理模型(包括链接的UngroupProxyModel类)在默认情况下都会这样运行。

QTableView的行为是显示这样的模型的buggy。例如,如果源模型有行-2; -3; 2; 3 (让;在我的回答中是行分隔符),则不进行排序的视图通常会显示类似于-2; -3; 2; 3; empty row; empty row的内容。空行显示在表的底部。当用户向下滚动足够接近这些项时,视图请求获取更多数据。但是,当启用排序时,视图将显示-3; -2; empty row; empty row; 2; 3,即将空的无效行移动到表的中间或顶部。它不影响功能,但看起来很尴尬。

然而,上述所有问题都取决于执行情况。有关详细信息,请参阅使用过的模型类的代码和文档。我认为可以实现任何您喜欢的代理模型。

此外,在某些情况下,在表中显示排序数据之前完全获取源模型是合理的。适当的排序或连接是不可能的,而不是所有的数据已经被获取。如果您获取源模型数据(例如while(model->canFetchMore()) { model->fetchMore(); }),那么代理模型的行为将完全像模型没有动态填充一样。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21348735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档