QT 4.7: MDI setActive Problem ...

Alles rund um die Programmierung mit Qt
Antworten
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

QT 4.7: MDI setActive Problem ...

Beitrag von Ritchie »

Hallo Zusammen,

ich habe folgendes Problem:
In meiner MDI Anwendung bleibt ein angewähltes Fenster weiterhin unter einem anderen Fenster liegen, es kommt nicht nach vorne. Ich kann es auch verschieben, ohne Auswirkung.

Ich verwende folgenden Code aus den Example-MainWindow für MDI (wo es geht) in meiner Anwendung.

Code: Alles auswählen

 	connect(MainMdiArea, SIGNAL(subWindowActivated(QMdiSubWindow *)), this, SLOT(setActiveSubWindow(QMdiSubWindow *)));
mit diesem Slot:

Code: Alles auswählen

void MainWindow::setActiveSubWindow(QMdiSubWindow *window)
{
    if (!window)
        return;
    mdiArea->setActiveSubWindow(window);
}
Der Witz ist übrigens, wenn ich einmal auf den Desktop klicke, dann klappt es auf einmal, bis ich die Fenster erneut öffne.

Wo liegt mein Gedankenfehler.

Gruss R.
Zuletzt geändert von Ritchie am 16. März 2011 19:35, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Beim Laufen de Anwendung sollte auf der Console eine Fehlermeldung dass der Slot nicht gefunden wurde. Des weiteren bringt Dir dein connect() false zurück. Warum lass ich erstmal offen :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

Beitrag von Ritchie »

Hi,

das mit dem Slot habe ich jetzt am rennen, der wird aufgerufen...
Nur bleibt das Fenster im Hintergrund...

Gruss R.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

So ganz verstehe ich noch nicht was Du möchtest. Du fängst subWindowActivated() ab nur um dann dieses Fenster (was ja schon active ist) nochmal mit setActiveSubWindow() zu aktivieren? Was soll da noch passieren?
Des weiteren - sind mdiArea und MainMdiArea das gleiche? Wenn ja warum dann zwei verschiedene Namen? Wenn nein - wie sollte eine mdi-Area ein SubWindow eines anderen Fensters beeinflussen können?
Warum das SubWindow nicht nach oben kommt kann man so nicht sagen. Was ist an diesem so speziell? Mehr Code bzw. am besten gleich ein minimales, kompilierbares Beispiel.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

Beitrag von Ritchie »

Ich hatte diese Zeilen vorher nicht drin, da ich dachte das arbeite auch so.
Nur mit Zeilen arbeitet es auch nicht. Ich wollte halt nur den Fehler eingrenzen. Hier scheint der Fehler dann wohl nicht zu sein. Ebenso wollte ich eine zweite Meinung hören, bevor ich noch weitere Abende suche. (ist jetzt der dritte)

Gruss R.

Edit: Ursache gefunden:
Es wurde ein show des Fensters gemacht, bevor es in das MDI-Objekt eingefügt wurde. Fehler in der "Unterklasse".
Antworten