qt destructor qt-signals

¿Las señales en Qt se desconectan automáticamente cuando se elimina una clase?



destructor qt-signals (1)

¿Qt elimina automáticamente las conexiones entre los objetos, cuando uno de los lados se elimina?

por ejemplo, connect (A .. , B ..) , cuando se borra A (un puntero), o se borra B, ¿se desconectará la conexión?

¿Es necesario desconectarse explícitamente en destructor?


Sí, el destructor QObject::~QObject se ocupa de eso:

Todas las señales hacia y desde el objeto se desconectan automáticamente, y los eventos publicados pendientes para el objeto se eliminan de la cola de eventos.
Sin embargo, a menudo es más seguro utilizar deleteLater() lugar de eliminar una subclase QObject directamente.

Tenga cuidado sin embargo:

Advertencia: Eliminar un QObject mientras los eventos pendientes están esperando ser entregados puede causar un bloqueo. No debe eliminar el QObject directamente si existe en un subproceso diferente al que se está ejecutando actualmente. Utilice deleteLater () en su lugar, lo que hará que el bucle de evento elimine el objeto después de que se le hayan entregado todos los eventos pendientes.