Russian Qt Forum
Ноябрь 25, 2024, 20:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение неактивности пользователя(устройств ввода)  (Прочитано 5226 раз)
Magvaj
Гость
« : Апрель 15, 2009, 17:25 »

Собственно, есть ли способ для сабжа в Qt. Или же курить документацию для каждой системы отдельно?

P.S: нужно для мессенджера, чтобы устанавливать статус "отошёл"
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 15, 2009, 18:52 »

Конкретно под каждую платформу делать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ax
Чайник
*
Offline Offline

Сообщений: 60


Просмотр профиля
« Ответ #2 : Апрель 16, 2009, 13:11 »

попробуй.
1. Установить глобальный перехват Events для Application
Код:
	QCoreApplication::instance()->installEventFilter(this);
2. таймер
Код:
	
           int inactiveTime = 60*1000;
           QTimer * timerInactive = new QTimer(this);
connect(timerInactive, SIGNAL(timeout()), this, SIGNAL(inactiveTimeout()));
timerInactive->setInterval(inactiveTime);
timerInactive->start();

3. в процедуре обработки event
Код:
bool MyObject::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::KeyPress || event->type() == QEvent::MouseMove ||
event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease)
{
if (timerInactive->isActive())
timerInactive->start();
}
return false;
}

Соответсвенно если в течении inactiveTime мс не нажимались клавиши и не двигалась-клацалачь мышь будет сигнал inactiveTimeout
У меня работает Linux, Win
Записан
spirit
Гость
« Ответ #3 : Апрель 16, 2009, 13:16 »

ну так этот метод будет работать только для данного приложения,
а как я понял ему нужно время простоя всей системы.
как например в аське, жабе или скайпе, если полязователя нет
за компом, то через определенное время поменяется статус.
« Последнее редактирование: Апрель 17, 2009, 08:12 от spirit » Записан
kirill
Гость
« Ответ #4 : Апрель 17, 2009, 05:47 »

Под виндой внедрять длл во все процессы и следить за активностью через хуки.
Записан
Magvaj
Гость
« Ответ #5 : Апрель 17, 2009, 07:58 »

благодарю за ответы. Сажусь кодить...
Записан
ритт
Гость
« Ответ #6 : Апрель 26, 2009, 03:08 »

советую поряться в исходниках psi. свежий psi написан на Qt4, а требуемый по сабжу функционал, насколько я помню, был вынесен в отдельный класс или модуль.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.151 секунд. Запросов: 23.