example: Add example of docking main window into main window

This commit is contained in:
Sergio Martins
2020-05-25 21:45:21 +01:00
parent ee4ad02722
commit 63c90875aa
3 changed files with 85 additions and 12 deletions

View File

@@ -82,16 +82,18 @@ int main(int argc, char **argv)
QCommandLineOption maximizeButton("b", QCoreApplication::translate("main", "DockWidgets have maximize/restore buttons instead of float/dock button"));
parser.addOption(maximizeButton);
QCommandLineOption dockableMainWindows("j", QCoreApplication::translate("main", "Allow main windows to be docked inside other main windows (this feature is work in progress)"));
#ifdef KDDOCKWIDGETS_SUPPORTS_NESTED_MAINWINDOWS
QCommandLineOption dockableMainWindows("j", QCoreApplication::translate("main", "Allow main windows to be docked inside other main windows"));
parser.addOption(dockableMainWindows);
#endif
QCommandLineOption maxSizeOption("g", QCoreApplication::translate("main", "Make dock #8 have a max-size of 200x200. (this feature is work in progress)"));
QCommandLineOption centralFrame("f", QCoreApplication::translate("main", "Persistent central frame"));
#if defined(DOCKS_DEVELOPER_MODE)
parser.addOption(centralFrame);
parser.addOption(dockableMainWindows);
parser.addOption(maxSizeOption);
#else
Q_UNUSED(dockableMainWindows)
Q_UNUSED(maxSizeOption)
Q_UNUSED(centralFrame)
#endif
@@ -142,9 +144,14 @@ int main(int argc, char **argv)
const bool restoreIsRelative = parser.isSet(relativeRestore);
const bool nonDockableDockWidget9 = parser.isSet(nonDockable);
const bool maxSizeForDockWidget8 = parser.isSet(maxSizeOption);
const bool usesDockableMainWindows = parser.isSet(dockableMainWindows);
const bool usesMainWindowsWithAffinity = parser.isSet(multipleMainWindows);
#ifdef KDDOCKWIDGETS_SUPPORTS_NESTED_MAINWINDOWS
const bool usesDockableMainWindows = parser.isSet(dockableMainWindows);
#else
const bool usesDockableMainWindows = false;
#endif
MyMainWindow mainWindow(QStringLiteral("MyMainWindow"), options, nonClosableDockWidget0,
nonDockableDockWidget9, restoreIsRelative, maxSizeForDockWidget8);
mainWindow.setWindowTitle("Main Window 1");
@@ -172,12 +179,22 @@ int main(int argc, char **argv)
mainWindow2->resize(1200, 1200);
mainWindow2->show();
} else if (parser.isSet(dockableMainWindows)) {
} else if (usesDockableMainWindows) {
auto mainWindowDockWidget = new DockWidget(QStringLiteral("MyMainWindow-2-DW"));
const QString affinity = QStringLiteral("Inner-DockWidgets-2");
auto dockableMainWindow = new MyMainWindow(QStringLiteral("MyMainWindow-2"), options,
false, false, restoreIsRelative, false);
false, false, restoreIsRelative, false, affinity);
dockableMainWindow->setAffinities({ affinity });
dockableMainWindow->setStyleSheet(QStringLiteral("background: yellow"));
dockableMainWindow->setWindowTitle("Dockable Main Window");
dockableMainWindow->show();
mainWindowDockWidget->setWidget(dockableMainWindow);
mainWindowDockWidget->show();
mainWindowDockWidget->resize(800, 800);
}
return app.exec();