找到解决方案。见下文。
我在滚动窗口中使用GTK 3.8 gtk_grid 。 C代码通过大量数据工作并在网格中显示一些数据。在程序完成处理所有数据之前,GTK不会绘制网格。在添加数据时,如何强制GTK 3刷新屏幕?
我尝试了 gtk_widget_queue_draw 但没有任何反应。 我还测试了 gtk_widget_show_now 但没有发生任何事情。
该过程可能会持续几秒钟或几分钟。用户可以选择要显示的数据范围和刷新。刷新可能是每5秒或每10行。如果有人工作,我会很高兴。
我能找到的唯一相关问题是GTK 2,并推荐不起作用的gtk_widget_queue_draw。我阅读了所有GTK文档,并推荐了相同的功能。文档,示例和答案中缺少某些内容。
从我所看到的情况来看,我必须处理100行然后停止并显示一个按钮以请求下一行100.这是不可行的。用户需要将数据滚动到最后。
GTK_grid在版本3中似乎已经改变了几次。如果有更有效或更有效的方式来显示行和列,我没有被锁定到GTK_grid。没有选择恢复到早期的GTK。
我找到了适用于GTK 3.8的东西。在gtk_widget_queue_draw之后添加一行:
gtk_widget_queue_draw(results);
while (g_main_context_pending(NULL)) {
g_main_context_iteration(NULL,FALSE);
}
阅读The Main Event Loop了解详情。