Seite 1 von 1

QPushButton erscheint nur bei Deklaration über Pointer

Verfasst: 20. Februar 2009 18:29
von insertcoin
Hallo,

ich bin gerade auf einen effekt gestoßen den ich nicht ganz verstehe.

wenn ich den QPushButton wie im Folgenden über eine normale Variable deklariere und ihn in mein QWIdget einsetzte, wird er nicht angezeigt:

Code: Alles auswählen

    QPushButton button("test");
    QHBoxLayout layout;
    layout.addWidget(&button);

     this->setLayout(&layout);
Wenn ich ihn aber über einen Pointer deklariere wird er ganz normal angezeigt:

Code: Alles auswählen

     QPushButton *button=new QPushButton("test");
     QHBoxLayout layout;
     layout.addWidget(button);

     this->setLayout(&layout);
Kann mir das jemand erklären? Eigentlich übergebe ich doch immer die Adresse, mach also 2 mal das gleiche. Das Programm hab ich mit dem QT Creator geschrieben. Hoffe ich stehe nicht auf dem Schlauch und meine Frage ist nicht total schwachsinnig. Aber das verwirrt mich gerade total.

Vielen Dank schonmal im Vorraus!!

Verfasst: 20. Februar 2009 18:33
von upsala
Nein, du machst nicht 2x das gleiche. Denk mal über die Lebensdauer deine Objekte nach.

Verfasst: 20. Februar 2009 18:50
von insertcoin
liegt es daran dass die normal variable gelöscht wird wenn der methodenaufruf beendet ist??

Verfasst: 20. Februar 2009 20:20
von Christian81
... und ab nach C++-Grundlagen

Verfasst: 20. Februar 2009 20:37
von upsala
Bingo!

Verfasst: 20. Februar 2009 21:11
von insertcoin
oh man, das hab ich eigentlich schon gewusst. aber in dem fall wars mir jetzt einfach nicht klar.
danke für die hilfe, manchmal hab ich einfach so kleine aussetzer :).