Wie kann man den Speicher begeben, wenn ein QT -Fenster schließt?
-
21-08-2019 - |
Frage
Ich erstelle derzeit ein Programm in QT, OpenCV, Mac OS X. Ich habe ein Hauptfenster und dann ein separates Fenster, das geöffnet wird. Ich überfahre das neue Fenster mehrere Matrixklone im Konstruktor:
ImageWindow *imageWin = new ImageWindow(
cvCloneMat(getData->getMasterRawMat(1)),
cvCloneMat(getData->getMasterRawMat(2)),
cvCloneMat(getData->getMasterRawMat(3)),
cvCloneMat(getData->getMasterRawMat(4)) );
imageWin->show();
Wie verkollekt ich (wo nenne ich CvReleasemat), wenn das neue Fenster geschlossen ist?
Lösung
Sie können das in zB Ihren tun CloseEvent (). Alternativ, wenn Sie verwenden Qt :: wa_deleteonclose für dein Widget -Attribute, Das Widget wird gelöscht, wenn es geschlossen ist, was bedeutet, dass Sie einige Bereinigungsroutinen in den Destruktor aufnehmen können.
Andere Tipps
Erwägen Sie zu verwenden Raii Idiom und Smart Zeiger Und Sie müssen sich nicht erinnern, wann Sie zugewiesene Speicher veröffentlichen müssen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow