Seite 1 von 1

UI ändert sich nicht sichtbar

Verfasst: 22. November 2012 20:31
von kannaum
Hallo,

Folgendes Problem:
Ich habe 2 Klassen:
einmal die normale Klasse MainWindow und eine 2.
In der 2. Klasse erstelle ich eine Instanz von MainWindow und rufe eine Funktion auf, die im UI in einem Grid-Layout ein paar Widgets ändern soll, was sie leider nicht tut.
Ich habe als Überprüfung ein QLabel genommen und ihm den Text "text" zugewiesen.
Wenn nun die entsprechende Funktion den Text ändert und ich mir gleich danach den text vom QLabel über qDebug ausgeben lasse, bekomme ich den geänderten Text.
Im Label steht aber weiterhin "text".

Ich habe leider keine Ahnung wo das Problem sein könnte.
Vielleicht scheitert es auch an meinen C++-Kenntnissen, aber ich hoffe trotzdem, dass irgendjemand einen Tipp hat, was ich noch probieren könnte.
Vielen Dank!

mfg Philipp

Re: UI ändert sich nicht sichtbar

Verfasst: 22. November 2012 20:52
von Christian81
Minimales Beispiel bitte.

Re: UI ändert sich nicht sichtbar

Verfasst: 22. November 2012 21:30
von kannaum
Für den Dateianhang wars leider zu groß, deswegen mit URL:
http://philipp7.bplaced.net/minBeispiel.rar
Ich hoffe, dass das minimal genug ist.

mfg Philipp

Re: UI ändert sich nicht sichtbar

Verfasst: 22. November 2012 23:24
von veeman
Das liegt daran, dass du eine zweite Instanz von deinem MainWindow erstellst. Du musst wenn schon auf die erste Instanz zugreifen.

Eine möglichkeit wäre es deiner dummyFunc den Pointer der aktuellen Instanz mit zu geben.

Bsp:

Code: Alles auswählen

void Klasse2::dummyFunc(MainWindow* mw) {
    mw->changeUi();
}

...

void MainWindow::startTest() {
Klasse2* k2 = new Klasse2();
k2->dummyFunc(this);
delete k2;
}
Mfg veeman

Re: UI ändert sich nicht sichtbar

Verfasst: 24. November 2012 18:03
von kannaum
Vielen Dank!
Manchmal sieht man den Wald vor lauter Bäumen nicht mehr ;)

mfg Philipp

Re: UI ändert sich nicht sichtbar

Verfasst: 26. November 2012 15:18
von GoaSkin
Ist jetzt zwar hier nicht der Fehler gewesen, aber ein häufiger Fehler mit dem selben Effekt ist, dass die Leute in ihrem Code Änderungen an ihrem aus einem UI erstellten Hauptfenster vornehmen und dann zuletzt die Funktion setupUI aufrufen mit dem Effekt, dass zusätzliche Widgets und Modifikationen an Bestehenden wieder rückgängig gemacht werden.