Problem mit slots
Verfasst: 31. Mai 2007 08:50
Hallo.
Ich bin prinzipiell wohl Anfänger, was Qt und C++ angeht.
Ich habe ein Programm geschrieben, das mir auf der ersten Seite ein Menü mit mehreren Buttons darstellt. Die Buttons sollen mit einem eigenen Slot verknüpft werden, dann soll der bisherige Bildschirm gelöscht und ein neuer angezeigt werden.
Die erste Seite ist eine QVBox. Nach Aufruf des Slots (der übrigens funktioniert), lösche ich diese QVBox mit delete. Auch das geht, der Fensterinhalt wird gelöscht. Dann versuche ich eine neue QVBox anzulegen, um darin wieder andere Inhalte auszugeben. Aber das funktioniert nicht mehr, obwohl das im Konstruktor schonmal genauso mit Erfolg gemacht wurde.
So wird mein Slot erfolgreich aufgerufen:
Und das ist der Slot-Code. Der Aufruf klappt, das delete führt dazu, dass der bisherige Fensterinhalt gelöscht wird, danach passiert nichts sichtbares mehr. Ist an der Stelle this noch mein Editor-Objekt?
Ist meine Vorgehensweise überhaupt annähernd normal für C++/Qt? Den Fensterinhalt in ein Objekt packen, um dieses dann bei Wechsel der Seite einfach zu löschen, um danach ein neues Objekt mit Elementen zur Darstellung zu erzeugen?
Bei nicht-OO Programmiersprachen löscht man ja einfach den Bildschirm und schreibt aufs neue los. Oder ist es üblich, für die nächste Bildschirmseite ein eigenes Objekt anzulegen?
Über Hilfe würde ich mich freuen!
-Efchen
Ich bin prinzipiell wohl Anfänger, was Qt und C++ angeht.
Ich habe ein Programm geschrieben, das mir auf der ersten Seite ein Menü mit mehreren Buttons darstellt. Die Buttons sollen mit einem eigenen Slot verknüpft werden, dann soll der bisherige Bildschirm gelöscht und ein neuer angezeigt werden.
Die erste Seite ist eine QVBox. Nach Aufruf des Slots (der übrigens funktioniert), lösche ich diese QVBox mit delete. Auch das geht, der Fensterinhalt wird gelöscht. Dann versuche ich eine neue QVBox anzulegen, um darin wieder andere Inhalte auszugeben. Aber das funktioniert nicht mehr, obwohl das im Konstruktor schonmal genauso mit Erfolg gemacht wurde.
So wird mein Slot erfolgreich aufgerufen:
Code: Alles auswählen
QObject::connect(pBoxLogo, SIGNAL(clicked()), this, SLOT(createEditPage()));Code: Alles auswählen
void Editor::createEditPage()
{
delete pMainPage;
pEditPage=new QVBox(this);
QLabel *pText = new QLabel(pEditPage);
pText->setText("Dieser Text wird nicht angezeigt.");
pText->setFont(QFont("URW Chancery L", 30, QFont::Bold));
pText->setAlignment(AlignHCenter | AlignVCenter);
}Bei nicht-OO Programmiersprachen löscht man ja einfach den Bildschirm und schreibt aufs neue los. Oder ist es üblich, für die nächste Bildschirmseite ein eigenes Objekt anzulegen?
Über Hilfe würde ich mich freuen!
-Efchen