Cómo cancelar la asignación de memoria cuando se cierra una ventana Qt?
-
21-08-2019 - |
Pregunta
Actualmente estoy creando un programa en Qt, OpenCV, Mac OS X que tiene una ventana principal, y luego una ventana separada que se abre. Paso la nueva ventana de varios clones de la matriz en el constructor:
ImageWindow *imageWin = new ImageWindow(
cvCloneMat(getData->getMasterRawMat(1)),
cvCloneMat(getData->getMasterRawMat(2)),
cvCloneMat(getData->getMasterRawMat(3)),
cvCloneMat(getData->getMasterRawMat(4)) );
imageWin->show();
¿Cómo DEALLOCATE (donde hago yo llamo cvReleaseMat), cuando la nueva ventana está cerrada?
Solución
Puede hacer que en, por ejemplo, CloseEvent () . Alternativamente, si se utiliza Qt :: WA_DeleteOnClose para su atributos de widget de , se borrará el widget cuando está cerrado, lo que significa que puede colocar algo limpio- rutinas en el destructor.
Otros consejos
Considere el uso de RAII modismo y punteros inteligentes y usted no tendrá que recordar cuándo liberar la memoria asignada.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow