[C++/GTKmm] Uśpienie przycisku


(Marcin86s) #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.


(Marcinch7) #2

GUI nie zdąży się zupdatować ponieważ zamrażasz główny wątek.


(Marcin86s) #3

Gdyby ktoś w przyszłości miał podobny problem:

while (Gtk::Main::events_pending())

        Gtk::Main::iteration();

(Sawyer47) #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.