作为使用 GTK+ 的新手,我并不完全了解它的所有功能。
基本上,我有一个有 4 列的 GtkTreeView 小部件。我需要每隔几秒钟更新 4 列中显示的文本,但我不知道如何在 GTK+ 中执行此操作。
我知道我可以使用 gtk_tree_store_clear 刷新数据,但我不确定如何重新填充列并刷新顶级窗口以显示这些新数据?
您需要找到GtkTreeIter
正确的行,然后使用适当的(特定于模型的)设置器来更改数据。
例如gtk_list_store_set()
GtkListStore 模型。
如果只是想改变一些数据,不需要清除整个模型,这样很浪费而且很慢。
如果您确实需要更改所有数据,那么当然,清除它。
您不必担心让显示刷新;视图监听来自模型的事件,并在模型改变时自动知道刷新。
更新:
更改数据时(如评论中所述),您不需要“刷新”旧数据。模型拥有数据,并且知道如何跟踪使用的内存。您只需根据需要使用上述gtk_list_store_set()
调用将新的所需数据放入模型中。您可以根据需要经常执行此操作,并且每隔几秒一次的更新频率应该没有问题。
当然,在这种情况下,为了让您的应用程序(为简单起见,我假设它是单线程的)响应,您必须有一种异步触发更新的方法,可能使用计时器。查看 glib 的g_timeout_add()
函数以了解如何添加简单的全局计时器。