您好,我知道如何使用 Gtkmm 创建进度条。我还知道当我单击按钮时进度条如何增加 10% 例如。但是我不知道如何实现自动增加的进度条,我的意思是这样的:
for(int i = 0; i<=10; i++){
double percentage(progressBar.get_fraction() + 0.1);
progressBar.set_fraction(percentage);
getchar();
}
但是我没有看到进度条何时增加...我只是看到进度何时已满...
感谢您的帮助!
当您想要使用实际应更改其外观的进度条(或微调器等(时,您需要确保主线程有一些时间来相应地更新 UI。
如果您在主线程中有一个循环来设置新值并在getchar()
中阻止线程,则此线程无法更新UI以反映任何小部件的新状态。
要查看您的更新,您应该将循环调用getchar
移动到其他线程中,并且仅在主线程中执行gtk_*
函数调用。这可以通过在g_idle_add()
查询更新函数来实现。
然后,可以在线程被阻止时更新 UI。
如果将getchar
替换为需要一些时间的其他操作,则此其他活动也将阻止线程更新 UI,除非您将其移动到其他线程中。
您还可以考虑在更新小部件状态之间将控制权返回主线程的其他机制。