0

您好,我知道如何使用 Gtkmm 创建进度条。我还知道一个按钮,例如,当我单击按钮时,progressBar 如何增加 10%。但我不知道如何实现自动增加的progressBar 我的意思是这样的:

for(int i = 0; i<=10; i++){

        double percentage(progressBar.get_fraction() + 0.1);
        progressBar.set_fraction(percentage);
        getchar();
} 

但是我看不到progressBar何时增加...我只看到progressBAr何时已满...

谢谢您的帮助 !

4

1 回答 1

0

当您想使用实际应该改变其外观的进度条(或微调器等)时,您需要确保主线程有时间相应地更新 UI。

如果主线程中有一个循环设置新值并阻塞线程getchar(),则该线程无法更新 UI 以反映任何小部件的新状态。

要查看您的更新,您应该getchar在其他线程中移动循环调用,并且只gtk_*在主线程中执行函数调用。这可以通过将更新函数加入队列来实现g_idle_add()

然后可以在线程被阻塞时更新 UI。

如果您替换getchar为需要一些时间的其他操作,则此其他活动还将阻止线程更新 UI,除非您将其移动到其他线程中。

您可能还会考虑在更新小部件状态之间将控制权返回给主线程的其他机制。

于 2017-08-09T12:03:03.253 回答