Здравствуйте.
Задача: У меня имеется многопоточное клиент - серверное приложение. Необходимо выполнять синхронизацию, когда окно клиента не имело фокуса и вдруг его получило. Т.е. у меня открыто 2 клиентских окна, в одном из них я добавил запись в БД. Нужно, чтобы при переключение на окно другого клиента, данные в нём обновились.
Пробовал совместное перегружение функций focusInEvent & focusOutEvent.
Но по непонятным причинам, срабатывает необходимое только 1 раз.
Вот конкретная последовательность моих шагов:
В классе главного окна ( QMainWindow ) я пишу объявление перегруженной функции:
...
private slots:
void focusInEvent( QFocusEvent* event );
...
В реализации функции имеется следующий код:
void CTouristClient::focusInEvent( QFocusEvent* event ) {
// Focus In Event
resetData();
}
И данный код выполняется всего лишь 1 раз. Т.е. я открываю окно одного клиента, добавляю в нём запись в БД, переключаюсь на окно другого клиента - данные обновились - всё сработало. При повторной попытке повторить то же самое - ничего не происходит.
Подскажите, пожалуйста, в чём может быть дело.
P.S. Qt Win Commercial 4.3.1 & MVS2005.
А причём тут многопоточность?
Что имеется в виду под клиентом? Другой экземпляр твоего приложения?
Если да, то смотри события с типами QEvent::ApplicationActivate и QEvent::ApplicationDeactivate
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)