gpt4 book ai didi

c++ - 在 QTreeView 中异步加载数据

转载 作者:行者123 更新时间:2023-11-30 05:40:07 28 4
gpt4 key购买 nike

我有一个非常大的树结构,我无法在客户端将完整的树加载到 Ram 中。我正在使用 Qt 的 QTreeView。

我想在用户展开元素时动态加载项目的子元素。

是否有一些信号会在用户打开树中的项目时触发?

我正在使用教程 Simple Tree Model Example .当我对模型进行更改时, View 也必须更新。而且我不想为了避免用户混淆而失去焦点!

sub elements of tree still loading

一段时间后(请求服务器)...

sub elements of tree finished loading and showing them

最佳答案

您需要实现一个 QAbstractItemModel 的子类,它可以处理所需的数据量。当一个项目在 View 中展开时,它调用 QAbstractItemModel::rowCount 来确定子项计数,然后调用 QAbstractItemModel::flagsQAbstractItemModel::data 获取 child 数据。如果此时请求的数据不可用,您应该返回占位符数据(即包含“正在加载”的 1 行),然后开始请求。收到数据后,发出 rowsAboutToBeInsertedrowsInserted 信号以通知 View 有关新数据(您还应该通知它有关删除“正在加载”行)。然后 View 将再次调用 rowCountdataflags 方法,您的模型现在应该提供加载的数据。使用 QCache 将最后访问的数据保存在内存中。

关于c++ - 在 QTreeView 中异步加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31893254/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com