Cómo detectar cuando una aplicación GUI ha estado inactiva, (es decir, sin interacción del usuario), durante un período de tiempo?¿Cómo detectar si una aplicación GUI de Qt ha estado inactiva, dentro de la propia aplicación (Qt)?
Tengo n número de pantallas Qt, quiero mostrar la pantalla de fecha y hora cuando la aplicación está inactiva durante 5 segundos y cuando hago clic en la pantalla de fecha y hora, debería volver a la última pantalla.
Actualmente estoy usando el código de abajo, ahora cómo comprobar si el sistema está inactivo durante 5 segundos trae una nueva forma y cuando algún cuerpo mousemove/clic debería volver al último formulario.
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
}
Y mi main.cpp se parece a esto:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainForm w;
w.show();
CustomEventFilter filter;
a.installEventFilter(&filter);
return a.exec();
}
Gracias.
¿Cuál es el problema con mostrar/cerrar un formulario? – Macke
Necesita ser más constructivo en sus preguntas/comentarios, no solo "darme el código por favor" y "no funciona, ¿ayuda?". No podemos hacer todo tu trabajo, ni somos lo suficientemente inteligentes como para descubrir qué funciona y qué no funciona a menos que aprendas a proporcionar más información sobre tu problema. – Macke
@Macke: Gracias, Macke. Tendré en cuenta la próxima vez que hago preguntas en SO. – user662285