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

时间:2016-01-20 23:37:05

标签: c gtk3

找到解决方案。见下文。

我在滚动窗口中使用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了解详情。

0 个答案:

没有答案