QPushButton erscheint nur bei Deklaration über Pointer

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

QPushButton erscheint nur bei Deklaration über Pointer

Beitrag 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!!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Nein, du machst nicht 2x das gleiche. Denk mal über die Lebensdauer deine Objekte nach.
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

Beitrag von insertcoin »

liegt es daran dass die normal variable gelöscht wird wenn der methodenaufruf beendet ist??
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

... und ab nach C++-Grundlagen
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Bingo!
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

Beitrag 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 :).
Antworten