2017-08-09 40 views
0

你好,我知道如何用Gtkmm创建一个progressBar。我知道还有一个按钮,当我点击按钮时,例如progressBar增加10%。但我不知道如何实现它会自动提高我的意思是这样的进度:在C++中使用Gtkmm ProgressBar

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

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

但我没有看到进度条增加的时候...我只是看的时候的进度条满...

谢谢你的帮助!

+0

C不是C++。请勿使用不相关的语言标记进行垃圾邮件。 – Gerhardh

+0

您使用多少个线程?这个循环是在主线程中执行的,它也负责UI更新? – Gerhardh

+0

此处有任何更新? – Gerhardh

回答

0

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

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

要查看更新,您应该在其他线程中调用getchar的循环,并且只在主线程中调用gtk_*函数。这可以通过g_idle_add()进入更新功能来实现。

然后可以在您的线程被阻止时更新UI。

如果用一些需要一些时间的其他操作代替getchar,则此其他操作也将阻止线程更新UI,除非您将其移至其他某个线程中。

您也可以考虑其他机制将控件返回到更新小部件状态之间的主线程。