marcin86s
(marcin86s)
23 Czerwiec 2012 02:40
#1
void on_click_costamwpetli()
{
przycisk->set_sensitive(0);
while(rób cos bardzo długo) {
std::cout << tekst;
sleep(1);
}
przycisk->set_sensitive(1);
}
Dlaczego przycisk dalej jest klikalny, zamiast uśpić się na czas trwania pętli? Kilkukrotne wciśniecie przycisku powoduje zwiechę programu.
GUI nie zdąży się zupdatować ponieważ zamrażasz główny wątek.
marcin86s
(marcin86s)
23 Czerwiec 2012 07:52
#3
Gdyby ktoś w przyszłości miał podobny problem:
while (Gtk::Main::events_pending())
Gtk::Main::iteration();
nr47
(Sawyer47)
23 Czerwiec 2012 07:58
#4
O dziwo u mnie pod gtkmm3 set_sensitive ma efekt natychmiastowo. Co nie zmienia faktu, że raczej nie chcesz wykonywać żadnych długotrwałych operacji w wątku GUI, bo wtedy GUI nie odpowiada.