У меня есть приложение Qt5.11.0 (на OSX10.13 и CentOS7.4) с несколькими QMainWindows. Я хотел бы, чтобы пользователи могли стыковать любой заданный QDockWidget в приложении с любым из экземпляров QMainWindow.
В приведенном ниже примере кода показано приложение с двумя QMainWindows и одним QDockWidget. Я могу отстыковать и повторно пристыковать QDockWidget к первому QMainWindow, к которому он был прикреплен, и к нему, однако, если я наведу отсоединенный QDockWidget над вторым QMainWindow, QDockWidget и второй QMainWindow будут игнорировать друг друга, а не стыковаться вместе, как ожидалось:
#include <QApplication>
#include <QMainWindow>
#include <QDockWidget>
#include <QLabel>
int
main( int argc, char *argv[] ) {
QApplication app( argc, argv );
QMainWindow* mw1 = new QMainWindow();
QMainWindow* mw2 = new QMainWindow();
mw1->setWindowTitle( "Main Window 1" );
mw2->setWindowTitle( "Main Window 2" );
mw1->setCentralWidget( new QWidget() );
mw2->setCentralWidget( new QWidget() );
QDockWidget* dockWidget = new QDockWidget( "Stepchild", mw1 );
QLabel* label = new QLabel( "Hello World" );
dockWidget->setWidget( label );
mw1->addDockWidget( Qt::LeftDockWidgetArea, dockWidget );
mw1->show();
mw2->show();
QRect first = mw1->geometry();
int pixeloffset = 200;
mw2->setGeometry( first.x() + pixeloffset,
first.y() + pixeloffset,
first.width(),
first.height() );
return app.exec();
}
Как я могу позволить моему QDockWidget, указанному выше, стыковаться в любом из QMainWindows в приложении?
Спасибо --