I am getting a weird issue. I have a few MDI windows in QMainWindow
and catching windowStateChanged()
in one of MDI to show/hide docking widget. Everything works fine here.
But if I try to put one of that window to dock (not adding it to mdiArea()
) like this :
myMDIWindow->setWindowFlags(Qt::Widget | Qt::CustomizeWindowHint |
Qt::FramelessWindowHint);
// Create dock window and put my mdi window into it
QDockWidget *dock = new QDockWidget(myMDIWindow->windowTitle(), this);
dock->setFloating(true);
dock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable);
dock->setAllowedAreas(Qt::RightDockWidgetArea);
dock->setWidget(myMDIWindow); // Wrap mdi window into dock
mainWindow()->addDockWidget(Qt::RightDockWidgetArea, dock);
then all other MDI windows become persistently active and I can't catch windowStateChanged
signal. Converting MDI window to a simple widget does not help as well.
What could be the problem here? Is this a Qt bug?
New info: myMDIWindow with tree widget have signal connected to mdi window which creates it (Let's call it first mdi window). This signal connected to a slot which creates new MDI window according to user double-click in this tree widget. In this case all mdi windows become active. If I create MDI window by clicking a button in first mdi window - all become normal again. Code to create mdi window is the same in both cases:
mdiArea->addSubWindow(newMDI);
newMDI->setMainWindow(this);
newMDI->show();
newMDI->raise();
mdiArea->setActiveSubWindow(newMDI);
"this" is main window. Could this be dock widget has focus or smth like this on mdi creation?
More info: if I undock window with tree widget all works fine again.