QMdiSubWindow aus QMdiArea lösen?!

Alles rund um die Programmierung mit Qt
Antworten
chrislo1976
Beiträge: 105
Registriert: 24. Februar 2008 09:45

QMdiSubWindow aus QMdiArea lösen?!

Beitrag von chrislo1976 »

Hallo zusammen!

Ich habe eine Anwendung mit einer QMdiArea und alle Hauptfenster sind Sub-Windows dieser MdiArea.
Normalerweise können diese Fenster ja nur innerhalb der MdiArea verschoben werden, nicht aber aus dem Fenster raus (z.B. auf einen 2ten Monitor)

Gibts da eine Möglichkeit SubWindows von der MdiArea zu "lösen", damit man es ausserhalb der MdiArea verschieben kann?
Optimalerweise wäre es gut wenn man es auch wieder "eingliedern" könnte.

Danke schon mal für Infos!

Gruß,
Christian
Nvidia
Beiträge: 238
Registriert: 22. Februar 2010 21:23

Beitrag von Nvidia »

ja, in dem du es clonst.
Allerdings kannst du kein QMdiSubwindow(sw) mit rausnehmen.
du kannst den inhalt des sw als Child von z.b. einem neuem QWidget nehmen udn das sw zerstoeren.
Beim Einfuegen halt umgekehrt.
nvidia
chrislo1976
Beiträge: 105
Registriert: 24. Februar 2008 09:45

Beitrag von chrislo1976 »

Hallo!

Ich habe es jetzt mal versucht OHNE zu Klonen:

Das Herauslösen:

Code: Alles auswählen

QMdiSubWindow* parent = qobject_cast<QMdiSubWindow*>(parentWidget());
if (parent != NULL)
{
   parent->setWidget(NULL);
   setParent(mdi->parentWidget() , Qt::Tool);
   mdi->removeSubWindow(parent);

   showWindow();
}
...und das wieder einfügen:

Code: Alles auswählen

MdiAreaEx* mdi = MdiAreaEx::getMDIAreaEx();
if (mdi)
{
   mdi->addSubWindow(this);
   showWindow();
}
Auf den ersten Blick scheint es zu funktionieren, ich muss das aber noch genau durchtesten!

Danke für Tipp!

Gruß,
Christian
Antworten