[gelöst] SubWindow in MdiArea nicht verschiebbar machen

Alles rund um die Programmierung mit Qt
Antworten
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

[gelöst] SubWindow in MdiArea nicht verschiebbar machen

Beitrag 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.
Zuletzt geändert von TSS am 14. Februar 2010 23:26, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

moveEvent abfangen und ignorieren.
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag 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());
    }
}
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag 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.
Antworten