Problem mit QMdiArea,QMdiSubWindow,UI und Auto-Connects
Verfasst: 5. September 2008 09:44
Hallo!
Ich habe in einem Programm folgende Situation:
Ein QMainWindow mit einer QMdiArea als CentralWidget. Dieser QMdiArea füge ich per addSubWindow() Objekte hinzu die von QMdiSubWindow abgeleitet sind und über eine UI verfügen (UI-Datei vom Designer).
Vorher waren die Objekte von QWidget abgeleitet und da gabs auch keine Probleme, allerdings funktionierte da die Wiederherstellung der Größen und Positionen der Fenster nicht richtig.
Jetzt das Problem:
Wenn ich nun im Programm so ein SubWindow öffne, wird die komplette UI völlig in der oberen linken Enke zusammengeschoben und ist so völlig unbrauchbar.
Im Ausgabefenster kommt dabei diese Warnung :
In der Doku und im Internet hab ich dann gelesen warum dies passiert und auch einen Workaround dafür gefunden:
So wars vorher:
Und so mit dem Workaround:
Prinzipiell würde der Workaround ja funktionieren, die Fenster werden korrekt geöffnet und auch die UI ist genauso wie sie sein soll. Allerdings hab ich jetzt bemerkt dass sämtliche Slots nicht mehr funktionieren die per "Auto-Connect" (on_toolButton_clicked()) verbunden wurden. Das ist aber auch verständlich, da innerhalb setupUI() die Funktion connectSlotsByName() mit dem neu erzeugten Widget aufgerufen wird und nicht mit CViewxxxx, das die Slots enthält.
Jetzt suche ich nach einer Möglichkeit die QMdiSubWindows mit UI verwenden zu können und gleichzeitig aber auch die Funktionialität der Auto-Connects nicht zu verlieren.
Weiß da jemand Rat? Wäre für jede Art Hilfe dankbar!
Gruß,
Christian
Ich habe in einem Programm folgende Situation:
Ein QMainWindow mit einer QMdiArea als CentralWidget. Dieser QMdiArea füge ich per addSubWindow() Objekte hinzu die von QMdiSubWindow abgeleitet sind und über eine UI verfügen (UI-Datei vom Designer).
Vorher waren die Objekte von QWidget abgeleitet und da gabs auch keine Probleme, allerdings funktionierte da die Wiederherstellung der Größen und Positionen der Fenster nicht richtig.
Jetzt das Problem:
Wenn ich nun im Programm so ein SubWindow öffne, wird die komplette UI völlig in der oberen linken Enke zusammengeschoben und ist so völlig unbrauchbar.
Im Ausgabefenster kommt dabei diese Warnung :
Code: Alles auswählen
QLayout: Attempting to add QLayout "" to reports::CViewCommissioningReports "CViewCommissioningReportsClass", which already has a layoutSo wars vorher:
Code: Alles auswählen
CViewxxxx::CViewxxxx(QWidget *parent)
: QMdiSubWindow(parent)
{
// UI einrichten
ui.setupUi(this);
...
}Und so mit dem Workaround:
Code: Alles auswählen
CViewxxxx::CViewxxxx(QWidget *parent)
: QMdiSubWindow(parent)
{
QWidget* widget = new QWidget(parent);
// UI einrichten
ui.setupUi(widget);
this->setWidget(widget);
...
}
Jetzt suche ich nach einer Möglichkeit die QMdiSubWindows mit UI verwenden zu können und gleichzeitig aber auch die Funktionialität der Auto-Connects nicht zu verlieren.
Weiß da jemand Rat? Wäre für jede Art Hilfe dankbar!
Gruß,
Christian