mal wieder Destruktor...

Alles rund um die Programmierung mit Qt
Antworten
prinzenrolle
Beiträge: 25
Registriert: 4. August 2010 18:38

mal wieder Destruktor...

Beitrag von prinzenrolle »

Hallo,
ich habe eine Klasse Stack abgeleitet von QStackedWidget.
Diese ist auch die "Hauptklasse"

Code: Alles auswählen

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    #ifdef Q_OS_LINUX
        app.setOverrideCursor(Qt::BlankCursor);
    #endif

    Stack *st = new Stack();
    st->show();
    return app.exec();
}
Da ich in der Klasse dynamisch Widgets erzeuge und lösche habe ich einen Destruktor geschrieben...

Code: Alles auswählen

Stack::~Stack()
{
    int cnt,i;
    cnt = this->count();

    qDebug() << "Destruktor...";

    if(cnt >= 3)
    {
        for(i=2;i<cnt;i++)
            delete widget(i);
    }

    delete blight;
    delete data;
    delete S_ErrorWidget;
    delete S_Main;
    delete S_PortSetup;
    delete tcpcon;
}
Jetzt habe ich einen Button Exit,
drücke ich den wird das Programm geschlossen,

Code: Alles auswählen

void Stack::exit(void)
{
    qDebug() << "exit";
    qApp->closeAllWindows();
    qApp->quit();
}
allerdings wird der Destruktor vom Stack nicht aufgerufen.
Was mache ich denn falsch?

Vielen dank!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: mal wieder Destruktor...

Beitrag von Christian81 »

Und wo genau sollte er aufgerufen werden? Sehe keine delete...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
ceumern
Beiträge: 28
Registriert: 16. September 2011 11:25

Re: mal wieder Destruktor...

Beitrag von ceumern »

probiers mal mit

Code: Alles auswählen

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    #ifdef Q_OS_LINUX
        app.setOverrideCursor(Qt::BlankCursor);
    #endif

    Stack st;
    st.show();
    return app.exec();
}
prinzenrolle
Beiträge: 25
Registriert: 4. August 2010 18:38

Re: mal wieder Destruktor...

Beitrag von prinzenrolle »

ceumern hat geschrieben:probiers mal mit

Code: Alles auswählen

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    #ifdef Q_OS_LINUX
        app.setOverrideCursor(Qt::BlankCursor);
    #endif

    Stack st;
    st.show();
    return app.exec();
}
Hallo,
genau das war es!
Ich habe das Programm so abgeändert und da Stack nun nicht mehr dynamisch
erzeugt wird, bekomme ich nun beim quit dessen destruktor meldung ausgegeben.

Vielen dank.
Antworten