У меня странная проблема. У меня есть несколько окон MDI в QMainWindow
и ловушка windowStateChanged()
в одном из MDI, чтобы показать / скрыть стыковочный виджет. Здесь все отлично работает.
Но если я попытаюсь закрепить одно из этих окон (не добавляя его в mdiArea()
) следующим образом:
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);
тогда все другие окна MDI становятся постоянно активными, и я не могу поймать сигнал windowStateChanged
. Преобразование окна MDI в простой виджет тоже не помогает.
В чем может быть проблема? Это ошибка Qt?
Новая информация: myMDIWindow с древовидным виджетом имеет сигнал, связанный с окном mdi, которое его создает (назовем его первым окном mdi). Этот сигнал подключен к слоту, который создает новое окно MDI в соответствии с двойным щелчком пользователя в этом древовидном виджете. В этом случае все окна mdi становятся активными. Если я создаю окно MDI, нажав кнопку в первом окне mdi - все снова станет нормальным. Код для создания окна mdi в обоих случаях одинаков:
mdiArea->addSubWindow(newMDI);
newMDI->setMainWindow(this);
newMDI->show();
newMDI->raise();
mdiArea->setActiveSubWindow(newMDI);
«это» - главное окно. Может ли этот виджет док-станции фокусироваться или что-то вроде этого при создании MDI?
Дополнительная информация: если я откреплю окно с древовидным виджетом, все снова будет работать нормально.