你如何在GTK 3.8中强制刷新屏幕?

找到了解决方案。 见下文。

我在滚动窗口中使用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文档,并推荐了相同的function。 文档,示例和答案中缺少某些内容。

从我所看到的,我将不得不处理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); } 

阅读主事件循环以获取更多详细信息。