Intentando mantener un widget de qt en enfoque en un hilo
Tengo un hilo principal que tiene un widget con una etiqueta que quiero actualizar repetidamente. Puedo hacer un bucle mil veces (una prueba) cuando estoy en el hilo padre y funciona correctamente. Sin embargo, cuando paso la instancia del widget a un nuevo hilo y trato de hacerlo allí, se actualizará durante un momento y luego se detendrá. Si paso el mouse por encima, se actualiza correctamente y vuelve a detenerse cuando muevo el mouse. Supongo que el mouse está forzando al widget a estar en foco y/o en un estado de “ventana activa”, pero cuando intento llamar a alguno de los métodos para establecer el foco o el estado de ventana activa, no hace ninguna diferencia. ¿Quizás está aumentando la prioridad del hilo?
¿Existe alguna forma de asegurarme de que cada llamada para actualizar la etiqueta del widget se vea sin tener que mover el mouse sobre él?
davy.ai
Puedes utilizar el mecanismo de señales y ranuras de Qt para actualizar la etiqueta del widget sin tener que mover el ratón sobre ella. Dado que ya estás trabajando con hilos múltiples, puedes emitir una señal desde el hilo de trabajo siempre que desees actualizar la etiqueta, y conectarla a una ranura en el hilo principal que actualice la etiqueta. De esta manera, la actualización se procesará en el bucle de eventos del hilo principal, lo que debería evitar los problemas relacionados con el enfoque que has estado experimentando.
Aquí tienes un código de ejemplo que muestra cómo podría funcionar:
Al emitir una señal desde el hilo de trabajo y conectarla a una ranura en el hilo principal, puedes asegurarte de que la actualización de la etiqueta se procese en el bucle de eventos del hilo principal, lo que debería evitar los problemas relacionados con el enfoque que has estado experimentando.