2012-05-13 22 views

Respuesta

31

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

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

no cuidar de que:

Advertencia: La eliminación de un QObject mientras que los eventos pendientes en espera de ser entregado puede causar un accidente. 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.

+0

Tenga también en cuenta lo siguiente: "Advertencia: Eliminar un objeto QObject mientras esperan a que se entreguen eventos puede causar un bloqueo". Utilice ['deleteLater()'] (http://qt-project.org/doc/qt-4.8/qobject.html#deleteLater) si pudiera ocurrir esta situación. –

+2

también tenga cuidado con lambdas (si usa alguno) en el objeto eliminado: NO están desconectados ... adivine cómo sé;) – mBardos

+0

Esto también es cierto en Qt5. – RegularlyScheduledProgramming

Cuestiones relacionadas