I solved it, in case anyone is interested this is what I did:
I override the main window (where the mdiArea object is) closeEvent, and there I get a list of all subwindows in StackOrder. I save each window's object name into the settings with the respective stack index. When I read them I use a QMap<QMdiSubWindow*, int> and a QStringList of settings.childKeys().
Code wise: (Adjust it to your needs):
In writeSettings in closeEvent:
QList<QMdiSubWindow*> subWindows = ui->mdiArea->subWindowList(QMdiArea::StackingOrder);
for(int i=0; i<subWindows.size(); i++)
{
settings.setValue(subWindows[i]->objectName(), i);
}
QList<QMdiSubWindow*> subWindows = ui->mdiArea->subWindowList(QMdiArea::StackingOrder);
for(int i=0; i<subWindows.size(); i++)
{
settings.setValue(subWindows[i]->objectName(), i);
}
To copy to clipboard, switch view to plain text mode
In readSettings:
QMap<int, QMdiSubWindow*> subWindowMap;
for(int i=0; i<keys.size(); i++)
subWindowMap.insert(settings.value(keys[i], 0).toInt(), ui->mdiArea->findChild<QMdiSubWindow*>(keys[i]));
for(int i=0; i<subWindowMap.size(); i++)
{
ui->mdiArea->setActiveSubWindow(subWindowMap.value(i));
}
QStringList keys = settings.childKeys();
QMap<int, QMdiSubWindow*> subWindowMap;
for(int i=0; i<keys.size(); i++)
subWindowMap.insert(settings.value(keys[i], 0).toInt(), ui->mdiArea->findChild<QMdiSubWindow*>(keys[i]));
for(int i=0; i<subWindowMap.size(); i++)
{
ui->mdiArea->setActiveSubWindow(subWindowMap.value(i));
}
To copy to clipboard, switch view to plain text mode
This works fine, and is clean as far as I'm concerned.
Bookmarks