How to detect when a GUI application has been idle, (ie, no user interaction), for a period of time ?
I have n number of Qt Screens , I want to bring Date-Time screen when application is idle for 5 seconds and when i click on Date-Time screen it should return back to the last screen.
Currently I am using below code, now how to check if system is idle for 5 seconds bring a new form and when some body mousemove/click it should go back to the last form.
CustomEventFilter::CustomEventFilter(QObject *parent) :
QObject(parent)
{
m_timer.setInterval(5000);
connect(&m_timer,SIGNAL(timeout()),this,SLOT(ResetTimer()));
}
bool CustomEventFilter::eventFilter(QObject *obj, QEvent *ev)
{
if(ev->type() == QEvent::KeyPress ||
ev->type() == QEvent::MouseMove)
{
ResetTimer();
return QObject::eventFilter(obj, ev);
}
else
{
}
}
bool CustomEventFilter::ResetTimer()
{
m_timer.stop(); // reset timer
}
And my main.cpp looks like this :
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainForm w;
w.show();
CustomEventFilter filter;
a.installEventFilter(&filter);
return a.exec();
}
Thanks.
Override QCoreApplication::notify and a timer on mouse/keyboard events?
(Or just store the time of the event and have a timer check that value periodically, which might be faster than resetting a timer all the time.)