Перемещение окна в функции сигнала - PullRequest
0 голосов
/ 05 сентября 2011

Я пишу что-то вроде gtk_window_move (w, 0, 0); сна (5); но положение окна меняется только после вызова «сна». Интересно, не могли бы вы помочь мне заставить этот код работать правильно? Кстати, я использую gtk_signal_connect.

1 Ответ

2 голосов
/ 05 сентября 2011

Вы должны вызвать функцию gdk_flush, чтобы фактически отправить команду на сервер.Обратите внимание, что это необходимо только из-за вызова sleep, который вы не должны использовать в любом случае (приложение перестает отвечать на запросы в течение определенного времени);если бы вы использовали g_timeout_add, gdk автоматически очистил бы очередь команд X.

Об отображении виджетов: это операция, которая требует двунаправленной связи между программой и сервером, в основном сервер запрашивает у клиентанарисовать окно, и клиент отвечает командами, чтобы нарисовать его.В Gtk это означает, что вы должны позволить запустить основной цикл.Либо:

  • установите время ожидания для сна с помощью gtk_timeout_add, а остальную часть работы в обратном вызове
  • запустите вложенный основной цикл сgtk_main (возвратите его с помощью gtk_main_quit, возможно, из обратного вызова тайм-аута
  • запустите итерации цикла с помощью gtk_main_iteration. Это наименее перспективный подход, поскольку он будеттрудно совмещать это со сном.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...