2017-08-09 101 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,除非您將其移至其他某個線程中。

您也可以考慮其他機制將控件返回到更新小部件狀態之間的主線程。