У меня вопрос относительно перетаскивания QDockWidgets между QMainWindows. У меня есть приложение с разными «DockAreas», у которых есть член QMainWindow с одним или несколькими QDockWidgets. Кроме того, я хочу сделать QDockWidgets перетаскиваемым в другие, уже плавающие QDockWidgets (без вкладок!).
Чтобы иметь приятный эффект наведения при перетаскивании, плавающие QDockWidgets встраиваются в новый экземпляр моей DockArea с членом QMainWindow. Теперь я перехватываю событие mousemove перетаскиваемого QDockWidget и меняю его родительский элемент, когда он наводит курсор на другой QMainWindow моего DockArea. К сожалению, это вызывает сбой, и похоже, что исходный QLayoutItem, в котором находился этот QDockWidget, исчез.
void QDockWidgetPrivate::moveEvent(QMoveEvent *event)
{
// ...
// now this widgetItem member of state is kaputt
layout->hover(state->widgetItem, globalMousePos);
}
Я нашел разные предложения по перетаскиванию QDockWidgets между QMainWindows в Интернете:
1) Воспитание детей - вот что я пытаюсь сделать
2) QDrag - у меня не сработало, async exec () ломает мое приложение, и в конце мне все равно придется переродить
3) Вызвать addDockWidget (...) нового QMainWindow - закрепить QDockWidget, и мне пришлось бы снова сделать его плавающим и каким-то образом «продолжить перетаскивание»
Я открыт для любых новых предложений :) Заранее спасибо!