setLayout auf QDialog mit bereits gesetztem Layout

Alles rund um die Programmierung mit Qt
Antworten
brimborium
Beiträge: 9
Registriert: 27. März 2009 16:02

setLayout auf QDialog mit bereits gesetztem Layout

Beitrag von brimborium »

Hallo,

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();
}
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):

Code: Alles auswählen

(void) new QShortcut(Qt::Key_Down, this, SLOT(nextScreen()));
Das nächste Element aus screens laden. Ich habe mir das so gedacht:

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();
}
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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Du suchst QWidgetStack und/oder QWizard
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
brimborium
Beiträge: 9
Registriert: 27. März 2009 16:02

Beitrag von brimborium »

Oh ja, QWidgetStack sieht sehr vielversprechend aus. Probier ich gleich aus, sobald ich wieder zuhause bin. Vielen Dank für den Tipp.
brimborium
Beiträge: 9
Registriert: 27. März 2009 16:02

Beitrag von brimborium »

Also, QWidgetStack ist Qt3, das Qt4.5 Pendant dazu heisst QStackedWidget und funktioniert genau so, wie ich mir das vorgestellt habe. Nochmals vielen Dank für den Tipp. :)
Antworten