gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:29:54 26 4
gpt4 key购买 nike

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

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

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

最佳答案

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

例如<a href="http://library.gnome.org/devel/gtk/stable/GtkListStore.html#gtk-list-store-set" rel="noreferrer noopener nofollow">gtk_list_store_set()</a>用于 GtkListStore 模型。

如果你只是想改变一些数据,没有必要清除整个模型,那是非常浪费和缓慢的。

如果你真的需要更改所有数据,那么当然,清除它。

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

更新:

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

当然,在这种情况下,为了让您的应用程序(为简单起见,我假设它是单线程的)保持响应,您必须有一种方法来异步触发更新,也许使用计时器。看看 glib 的 <a href="http://library.gnome.org/devel/glib/stable/glib-The-Main-Event-Loop.html#g-timeout-add" rel="noreferrer noopener nofollow">g_timeout_add()</a>函数来学习如何添加一个简单的全局定时器。

关于c++ - 刷新 GTK+ 小部件中显示的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2622755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com