2014-02-12 2 views
0

У меня есть кусок кода в функции под названием check_pwd, что делать:GTK контроль + v3 возврата к основным для перерисовки

if(g_strcmp0(s1,s2) != 0){ 
    gtk_label_set_text(GTK_LABEL(a), "error"); 
    return -1; 
} 
else{ 
    gtk_label_set_text(GTK_LABEL(a), "ok"); 
    //other things 
} 

Пока отображается сообщение «ошибка», поскольку программа возвращает управление основной функции , как я могу показать сообщение «ok»?

+0

Вы не даете достаточно подробностей, чтобы дать содержательный ответ. что такое «// другие вещи»? вы блокируете основной цикл? вы никогда не должны блокировать основной цикл в GTK +, но используйте источник, например, простоя и таймауты, чтобы ввести свой собственный код: https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html – ebassi

ответ

0

Конечно, просто запустить главный цикл:

while(gtk_events_pending()) 
    gtk_main_iteration(); 

See the GTK+ documentation, который рекомендует выше:

Проверки, если какие-либо события находятся на рассмотрении.

Это может быть использовано для обновления пользовательского интерфейса и выключения тайм-аутов и т. Д., Хотя и требует интенсивного вычисления.

+0

, но это не всегда работает, и я читаю, что это не хорошая практика для повторного запуска основного, потому что у вас может быть проблема с повторным вводом! – polslinux

+0

@polslinux Насколько я знаю, это рекомендуемый способ сделать процесс блокировки все еще чувствительным в пользовательском интерфейсе. Это не перезапускает все 'gtk_main()', он просто обрабатывает любые входящие события. Опять же, см. Документацию, к которой я привязан. – unwind

Смежные вопросы