Как в QT отследить бездействие пользователя?

Есть проект на QT (Widgets) | ОС Ubuntu, но возможна и винда |

Есть в проекте таймер, который надо сбрасывать, если юзер что-либо делает... хоть на клавиши нажимает, хоть мышкой по экрану водит (грубо говоря, действие таймера должно произойти, если юзер нечего не делает).

Упростим задачу: прога работает в фулскрине (т.е. не надо следить за действиями вне формы/виджета).

Вопрос: а как? =)
  • Вопрос задан
  • 3142 просмотра
Решения вопроса 1
EXL
@EXL
Энтузиаст
Для Qt есть дополнительная библиотека - Qxt, в тестах есть приложение, демонстрирующее как раз то, что вам нужно: в заголовок окна выводится время простоя, когда юзер двинет мышкой или нажмет клавишу или совершит ещё какое-либо действие - счетчик сбрасывается.

1T5jlEf.gif

Можете использовать Qxt в своём проекте (доступны версии под Mac OS, Win и Linux), или выдернуть реализацию функции idleTime() для различных систем:
Win, X11 (GNU/Linux), Mac OS.

Скачать Qxt можно здесь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
У всех наследников QObject есть методы eventFilter и installEventFilter. Просто у того объекта, за которым хочешь следить вызываешь installEventFilter и передаешь ему указатель на объект, который будет за ним следить (возможно просто указатель на себя):

qt-project.org/doc/qt-4.8/qobject.html#eventFilter
Ответ написан
Комментировать
@Kyberman
Если в фулскрине, то делаете QWidget::setMouseTracking(true), переопределяете метод mouseMoveEvent() и в нём сбрасываете таймер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы