setLayout auf QDialog mit bereits gesetztem Layout
Verfasst: 16. August 2009 17:48
Hallo,
Ich habe eine Klasse Game, die von QDialog abgeleitet ist. Darin platziere ich ein QVBoxLayout:
screens ist eine QList<Screen*> von Objekten der Klasse Screen (abgeleitet aus QWidget) und score ist ein Pointer auf ein Objekt der Klasse Score (ebenfalls von QWidget abgeleitet).
Nun funktioniert das ganze auch sehr gut. Jetzt möchte ich aber mit einem Tastendruck (Code ist im Constructor von Game):
Das nächste Element aus screens laden. Ich habe mir das so gedacht:
Das compiled soweit auch, aber irgendwie wird das alte Layout nicht gelöscht, sondern das neue einfach drübergemalt. Wie kann ich das alte Layout auflösen (ohne die aktuellen Objekte im Layout zu löschen).
Ich hoffe, das war einigermassen klar.
Vielen Dank.
Stefan
Ich habe eine Klasse Game, die von QDialog abgeleitet ist. Darin platziere ich ein QVBoxLayout:
Code: Alles auswählen
void Game::runInterface() {
setWindowState(Qt::WindowFullScreen);
l = new QVBoxLayout(this);
currentScreen = 0;
l->addWidget(screens[currentScreen]);
l->addWidget(score);
setLayout(l); show();
update();
}Nun funktioniert das ganze auch sehr gut. Jetzt möchte ich aber mit einem Tastendruck (Code ist im Constructor von Game):
Code: Alles auswählen
(void) new QShortcut(Qt::Key_Down, this, SLOT(nextScreen()));Code: Alles auswählen
void Game::nextScreen() {
if (currentScreen+1 < screens.length()) {
currentScreen++;
}
delete layout();
l = new QVBoxLayout(this);
l->addWidget(screens[currentScreen]);
l->addWidget(score);
setLayout(l); show();
update();
}Ich hoffe, das war einigermassen klar.
Stefan