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 scree
According to QT Documentation :
To make your application perform idle processing (i.e. executing a special function whenever there are no pending events), use a QTimer with 0 timeout. More advanced idle processing schemes can be achieved using processEvents().
So you need to create a QTimer with zero timeout interval and connect it to your slot that is called when application is idle.
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.)
class QMyApplication : public QApplication
{
public:
QTimer m_timer;
QMyApplication() {
m_timer.setInterval(5000);
connect(&m_timer, SIGNAL(timeout()), this, SLOT(app_idle_for_five_secs());
m_timer.start();
}
slots:
bool app_idle_for_five_secs() {
m_timer.stop();
// ...
}
protected:
bool QMyApplication::notify ( QObject * receiver, QEvent * event )
{
if (event->type == QEvent::MouseMove || event->type == QEvent::KeyPress) {
m_timer.stop(); // reset timer
m_timer.start();
}
return QApplicaiton::notify(receiver, event);
}
};