Seite 1 von 1

QT 4.7: MDI setActive Problem ...

Verfasst: 16. März 2011 18:39
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.

Verfasst: 16. März 2011 19:12
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 :)

Verfasst: 16. März 2011 19:34
von Ritchie
Hi,

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

Gruss R.

Verfasst: 16. März 2011 19:45
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.

Verfasst: 16. März 2011 19:52
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".