Вы можете использовать пользовательский фильтр событий для обработки всех событий клавиатуры и мыши, полученных вашим приложением, прежде чем они будут переданы дочерним виджетам.
class MyEventFilter : public QObject
{
Q_OBJECT
protected:
bool eventFilter(QObject *obj, QEvent *ev)
{
if(ev->type() == QEvent::KeyPress ||
ev->type() == QEvent::MouseMove)
// now reset your timer, for example
resetMyTimer();
return QObject::eventFilter(obj, ev);
}
}
Тогда используйте что-то вроде
MyApplication app(argc, argv);
MyEventFilter filter;
app.installEventFilter(&filter);
app.exec();
Это определенно работает (я сам пробовал).
РЕДАКТИРОВАТЬ: И большое спасибо ereOn за указание, что мое предыдущее решение было не очень полезным.