Comment désaffecter la mémoire quand une fenêtre Qt ferme?
-
21-08-2019 - |
Question
Je crée actuellement un programme dans Qt, OpenCV, Mac OS X. J'ai une fenêtre principale, puis une fenêtre séparée qui est ouverte. Je passe la nouvelle fenêtre plusieurs clones de la matrice dans le constructeur:
ImageWindow *imageWin = new ImageWindow(
cvCloneMat(getData->getMasterRawMat(1)),
cvCloneMat(getData->getMasterRawMat(2)),
cvCloneMat(getData->getMasterRawMat(3)),
cvCloneMat(getData->getMasterRawMat(4)) );
imageWin->show();
Comment puis-je DEALLOCATE (où dois-je appeler cvReleaseMat), lorsque la nouvelle fenêtre est fermée?
La solution
Vous pouvez le faire en exemple closeEvent () . Sinon, si vous utilisez Qt :: WA_DeleteOnClose votre attributs un widget , le widget sera supprimé quand il est fermé, ce qui signifie que vous pouvez placer une Clean- les routines du destructor.
Autres conseils
Pensez à utiliser RAII idiome et pointeurs intelligents et vous ne serez pas besoin de se rappeler quand pour libérer la mémoire allouée.