Seite 1 von 1

[gelöst] SubWindow in MdiArea nicht verschiebbar machen

Verfasst: 14. Februar 2010 15:07
von TSS
Ich habe folgendes Problem:
Ich habe eine QMdiArea und darin sind 2 Widgets. Diese sollen jetzt jedoch nicht verschiebbar sein. Ich habe eine Lösung gefunden, indem ich bei den Fenstern oben den Rahmen entferne, dann kann man sie auch nicht mehr verschieben. Allerdings würde ich den Rahmen gerne behalten. Weiß da zufällig jemand eine Lösung?
Ziel soll sein, dass ich in der MdiArea 2 Fenster inklusive Rahmen habe, die sich allerdings nicht verschieben lassen.

Verfasst: 14. Februar 2010 17:15
von upsala
moveEvent abfangen und ignorieren.

Verfasst: 14. Februar 2010 23:09
von TSS
Das war auch das erste, was ich versucht habe. Nur das Problem beim moveEvent ist, dass es erst ausgelöst wird, wenn das Verschieben schon geschehen ist. Auf jeden Fall hat es nichts bewirkt. Ich habe auch schon versucht, es wieder zurückzuschieben, sobald das moveEvent ausgelöst wird, was natürlich zu einer Endlosschleife führt. Dann habe ich davor ne Überprüfung gemacht, ob es denn auch wirklich bewegt wurde, um die Endlosschleife abzufangen, dann ist das Programm einfach ohne Meldung abgestürzt.
Hier mal mein Versuch im moveEvent

Code: Alles auswählen

void MySubWindow::moveEvent(QMoveEvent *moveEvent)
{
    if(moveEvent->oldPos()!=moveEvent->pos())
    {
        this->move(moveEvent->oldPos());
    }
}

Verfasst: 14. Februar 2010 23:25
von TSS
Ich habe das Problem jetzt gelöst denke ich. Die Absturzursache lag bei

Code: Alles auswählen

this->move(moveEvent->oldPos()); 
Ich lasse der Klasse im Konstruktor jetzt einen festen Punkt mitgeben, und diesen übergebe ich dann beim move(). Der Rest ist gleich geblieben, aber jetzt geht es.