0

作为使用 GTK+ 的新手,我并不完全了解它的所有功能。

基本上,我有一个有 4 列的 GtkTreeView 小部件。我需要每隔几秒钟更新 4 列中显示的文本,但我不知道如何在 GTK+ 中执行此操作。

我知道我可以使用 gtk_tree_store_clear 刷新数据,但我不确定如何重新填充列并刷新顶级窗口以显示这些新数据?

4

1 回答 1

1

您需要找到GtkTreeIter正确的行,然后使用适当的(特定于模型的)设置器来更改数据。

例如gtk_list_store_set()GtkListStore 模型。

如果只是想改变一些数据,不需要清除整个模型,这样很浪费而且很慢。

如果您确实需要更改所有数据,那么当然,清除它。

您不必担心让显示刷新;视图监听来自模型的事件,并在模型改变时自动知道刷新。

更新:

更改数据时(如评论中所述),您不需要“刷新”旧数据。模型拥有数据,并且知道如何跟踪使用的内存。您只需根据需要使用上述gtk_list_store_set()调用将新的所需数据放入模型中。您可以根据需要经常执行此操作,并且每隔几秒一次的更新频率应该没有问题。

当然,在这种情况下,为了让您的应用程序(为简单起见,我假设它是单线程的)响应,您必须有一种异步触发更新的方法,可能使用计时器。查看 glib 的g_timeout_add()函数以了解如何添加简单的全局计时器。

于 2010-04-12T14:33:52.307 回答