0

我已经实现了 canFetchMore、hasChildren 和 fetchMore,以允许我的模型延迟加载。它非常简单并且基于 QT:http ://doc.qt.io/archives/qt-4.7/itemviews-simpletreemodel.html

我的问题是,在我的应用程序中获取孩子不是一个非常快速的操作,它涉及服务器端的几秒钟延迟,同时它会计算出孩子实际上是谁。

我不确定如何处理。每次有人扩展节点时,我都无法让我的应用程序锁定几秒钟。我不知道如何在后台发生这种情况。如果我要创建一个子进程或线程来实际完成检索子进程和更新客户端数据结构的工作,我将如何告诉模型这已成功完成(以及节点最终扩展) .

另外,有没有办法显示节点当前正在后台加载数据?

抱歉,如果这些是愚蠢的问题,GUI 编程对我来说仍然有点神秘,而且我以前从未使用过 QT。

作为记录,我使用的是 Python,但如果用 C++ 给出答案,我可以理解它们。

谢谢

4

1 回答 1

1

如果我要创建一个子进程或线程来实际完成检索子进程和更新客户端数据结构的工作,我将如何告诉模型这已成功完成(以及节点最终扩展) .

您可以使用信号和插槽。在您检索数据的线程中,您将发出一个自定义信号someDataAvailable(YourdataType),然后在 gui 中,您将使用类似handleDataReadySignal(YourdataType). 信号通过你在发射时给它的对象。显然您需要更新 gui 和handleDataReadySignal插槽中的列表。当然,您connect最好在附加列表的窗口/对话框的构造函数中插入信号槽

于 2012-07-11T22:43:48.247 回答