使用GTK +是一个新的共识,我并不完全了解它的所有功能。
基本上,我有一个包含4列的GtkTreeView小部件。我需要每隔几秒钟更新4列中显示的文本,但我不知道如何在GTK +中执行此操作。
我知道我可以使用gtk_tree_store_clear来刷新数据,但是我不确定如何重新填充列并刷新顶级窗口来显示这些新数据?
答案 0 :(得分:1)
您需要将GtkTreeIter
添加到正确的行,然后使用适当的(特定于模型的)setter来更改数据。
例如,GtkListStore模型的gtk_list_store_set()
。
如果您只想更改某些数据,则无需清除整个模型,这非常浪费和缓慢。
如果您确实需要更改所有数据,请务必清除它。
您不必担心让显示器刷新;视图侦听模型中的事件,并在模型更改时自动知道刷新。
<强>更新强>
更改数据时(如commment中所述),您无需“刷新”旧数据。该模型拥有数据,并知道如何跟踪使用的内存。您只需根据需要使用上述gtk_list_store_set()
调用将新的所需数据放入模型中。您可以根据需要经常这样做,并且每几秒更新一次应该没有任何问题。
当然,在这种情况下,为了保持您的应用程序(我假设是单线程,为简单起见)响应,您必须有办法异步触发更新,可能使用计时器。看看glib的g_timeout_add()
函数,了解如何添加一个简单的全局计时器。