刷新GTK +小部件中显示的文本?

时间:2010-04-12 14:23:39

标签: c++ gtk gtk2

使用GTK +是一个新的共识,我并不完全了解它的所有功能。

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

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

1 个答案:

答案 0 :(得分:1)

您需要将GtkTreeIter添加到正确的行,然后使用适当的(特定于模型的)setter来更改数据。

例如,GtkListStore模型的gtk_list_store_set()

如果您只想更改某些数据,则无需清除整个模型,这非常浪费和缓慢。

如果您确实需要更改所有数据,请务必清除它。

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

<强>更新

更改数据时(如commment中所述),您无需“刷新”旧数据。该模型拥有数据,并知道如何跟踪使用的内存。您只需根据需要使用上述gtk_list_store_set()调用将新的所需数据放入模型中。您可以根据需要经常这样做,并且每几秒更新一次应该没有任何问题。

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