Tengo trabajando en esto durante horas y no puedo entenderlo ni puedo encontrar ninguna ayuda en línea que funcione. Básicamente, la esencia de lo que estoy tratando de lograr es tener una GUI de Qt con un botón y un QTextBrowser. Cuando presiono el botón, quiero mostrar un mensaje y luego seguir imprimiendo este mensaje cada 10 segundos.Qt: ¿Cómo usar QTimer para imprimir un mensaje a QTextBrowser cada 10 segundos?
Pensé que usaría QTimer porque tiene sentido tener un temporizador para reproducir el mensaje cada 10 segundos. Cuando originalmente implementé esto en mi botón Clicked() SLOT causó que el programa se congelara. Busqué una solución en línea y encontré QApplication :: processEvents().
Así que, básicamente, en mi función que tenían algo como esto:
while(1)
{
QTimer *timer;
connect(...) //omitted parameters for this example
timer.start(10000);
ui->diplay->append("Message");
while(timer.isActive())
{
QApplication::processEvents()
}
}
que pensé que iba a estallar de la timer.isActive() while pero no será simplemente se queda ahí.
Así que pensé que esto era un problema de enhebrado. Así que descubrí cómo usar QThreads, pero todavía no puedo hacer que funcione. Básicamente, cuando creo un hilo con un temporizador y el hilo le dice al temporizador que comience, el programa se cierra y la consola dice "El programa ha terminado inesperadamente".
Tiene que haber una manera fácil de hacer esto, pero mi historial con Qt siempre ha sido que º
ACTUALIZACIÓN: Ahora estoy usando con temporizador> SingleShot (temporizador, SEÑAL (tiempo de espera()), esto, SLOT (update())) ; Pero necesito que el programa imprima el mensaje y espere los 10 segundos antes de continuar el proceso. Lo tengo en un ciclo while por lo que constantemente hago singleShots en lugar de uno cada 10 segundos. ¿Alguna sugerencia? ¡Gracias! –
¿A casi todos les falta el hecho de que esto está sucediendo en un ciclo while (1)? No es de extrañar que el programa se congele. –