LINUX.ORG.RU

Отрисовка окна до выполнения задачи. GTK+

 , ,


0

1

Никак не могу понять как сначала нарисовать окно, сделать нечто, выполняющееся долго, вывести в окно. Получается так: запуск программы, молчание, отрисовка заполненного окна. Для примера:

	GtkWidget *label;                                          
	GtkWidget *window;
                                          
	gtk_init( &argc, &argv );                          
	window = gtk_window_new( GTK_WINDOW_TOPLEVEL );         
	label = gtk_label_new("Wait!"); 
	gtk_container_add( GTK_CONTAINER( window ), label );
        gtk_widget_show_all(window);

/*Что-то долгое*/

	gtk_label_set_text(GTK_LABEL(label), "Результат выполнения чего-то долгого");
        gtk_main();

Думаю, с gtk_main() надо что-то сделать, а что - хз.


Разобрался как юзать gtk_timeout_add; Зря только тему создал. Хотя до этого весь интернет перерыл...

Yaourt
() автор топика
Ответ на: комментарий от Yaourt

Нежелательно что-то долгое делать в интерфейсном потоке. Отзывчивость пострадает. Создавай другой поток и делай там свое дело.

hibou ★★★★★
()
Ответ на: комментарий от hibou

Нежелательно что-то долгое делать в интерфейсном потоке. Отзывчивость пострадает.

В принципе верно, но бывают задачи, когда приходится «что-то делать» в интерфейском потоке очень долго. Например, посчитать нетривиальный layout из нескольких тысяч элементов. Я в таких случаях делаю инкрементальный алгоритм и выполняю его в обработчике idle итерациями по 0.1 секунды.

anonymous
()
Ответ на: комментарий от anonymous

+1. Тоже так делал. Но в иделе таких лэйаутов быть не должно.

hibou ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.