[gelöst] Destruktor wird nicht aufgerufen

Alles rund um die Programmierung mit Qt
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

wenn im header class QAction; als erweiterung vom dialog ist geht auch

Code: Alles auswählen


void Gui_Query_Check::closeEvent( QCloseEvent* e )
{
    msgb->information( this , "Fenster zu? ","QCloseEvent ok!");
	e->accept();
}
und closeEvent ist ein destructor ... ob button accept rejekt oder das dialog mit X schliessen....

da mein allerletzte destructor im main ist...

Code: Alles auswählen


#ifndef GUI_QUERY_CHECK_H
#define GUI_QUERY_CHECK_H
//
#include "ui_gui_query_check.h" /*  */
#include "gui_front.h"   /* QMainWindow h class */
//
/*  Save file as gui_query_check.h  */
/*  Class Gui_Query_Check Created on Mon Apr 17 11:45:45 CEST 2006  */
/*  Auto created on url http://ppk.ciz.ch/qt_c++/qt/res.html Ajax Java + IE6 */
//
#include <QPointer>
//
class QAction;
class QMessageBox;

class Gui_Query_Check : public QDialog, public Ui::Gui_Query_Check
{
	Q_OBJECT
	//
public:
	static Gui_Query_Check* self( QWidget* = 0 );
    QMessageBox *msgb;
	//
protected:
	void closeEvent( QCloseEvent* );
	//
private:
	Gui_Query_Check( QWidget* = 0 );
	static QPointer<Gui_Query_Check> _self;
	//
/* public slots: */

};
// 
#endif // GUI_QUERY_CHECK_H


#include "gui_query_check.h"
//
/*  Save file as gui_query_check.cpp  */
/*  Class Gui_Query_Check Created on Mon Apr 17 11:45:45 CEST 2006  */
/*  Auto created on url http://ppk.ciz.ch/qt_c++/qt/res.html Ajax Java + IE6 */
//
/* button name querygo */
#include <QCloseEvent>
//
QPointer<Gui_Query_Check> Gui_Query_Check::_self = 0L;
//
Gui_Query_Check* Gui_Query_Check::self( QWidget* parent )
{
	if ( !_self )
		_self = new Gui_Query_Check( parent );
	return _self;
}
//
Gui_Query_Check::Gui_Query_Check( QWidget* parent )
	: QDialog( parent )
{
	setupUi( this );
}
//
void Gui_Query_Check::closeEvent( QCloseEvent* e )
{
    msgb->information( this , "Fenster zu? ","QCloseEvent ok!");
	e->accept();
}




upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Keine Ahnung, was hier immer um den heißen Brei drumrum geredet wird. Ein Objekt muß gelöscht werden, damit der Destruktur aufgerufen wird. Das geht über 4 Arten:

1. Automatisch, wenn das Objekt auf dem Stack erzeugt wurde
2. Explizit durch delete
3. Durch die Verwendung von WidgetFlags (Qt::WA_DeleteOnClose)
4. Wenn es ein Child eines anderen Objektes ist, das aber auch gelöscht werden muß!

Wenn keine dieser 4 Möglichkeiten benutzt wird, wird auch nichts gelöscht und somit auch kein Destruktur aufgerufen...
Antworten