|
57 | 57 | #include <QStyle> |
58 | 58 | #include <QMessageBox> |
59 | 59 | #include <QMenu> |
| 60 | +#include <QToolButton> |
| 61 | + |
60 | 62 |
|
61 | 63 | #ifdef Q_OS_WIN |
62 | 64 | #include <QAxWidget> |
|
68 | 70 | #include "DockManager.h" |
69 | 71 | #include "DockWidget.h" |
70 | 72 | #include "DockAreaWidget.h" |
| 73 | +#include "DockAreaTitleBar.h" |
| 74 | +#include "DockAreaTabBar.h" |
71 | 75 | #include "FloatingDockContainer.h" |
72 | 76 |
|
73 | 77 |
|
@@ -315,10 +319,32 @@ void MainWindowPrivate::createContent() |
315 | 319 | FileSystemWidget->setFeature(ads::CDockWidget::DockWidgetFloatable, false); |
316 | 320 | appendFeaturStringToWindowTitle(FileSystemWidget); |
317 | 321 | auto TopDockArea = DockManager->addDockWidget(ads::TopDockWidgetArea, FileSystemWidget); |
| 322 | + |
| 323 | + // We create a calender widget and clear all flags to prevent the dock area |
| 324 | + // from closing |
318 | 325 | DockWidget = createCalendarDockWidget(ViewMenu); |
319 | 326 | DockWidget->setFeature(ads::CDockWidget::DockWidgetClosable, false); |
| 327 | + DockWidget->setFeature(ads::CDockWidget::DockWidgetMovable, false); |
| 328 | + DockWidget->setFeature(ads::CDockWidget::DockWidgetFloatable, false); |
320 | 329 | DockWidget->setTabToolTip(QString("Tab ToolTip\nHodie est dies magna")); |
321 | | - DockManager->addDockWidget(ads::CenterDockWidgetArea, DockWidget, TopDockArea); |
| 330 | + auto DockArea = DockManager->addDockWidget(ads::CenterDockWidgetArea, DockWidget, TopDockArea); |
| 331 | + |
| 332 | + // Now we add a custom button to the dock area title bar that will create |
| 333 | + // new editor widgets when clicked |
| 334 | + auto CustomButton = new QToolButton(DockArea); |
| 335 | + CustomButton->setToolTip(QObject::tr("Create Editor")); |
| 336 | + CustomButton->setIcon(svgIcon(":/adsdemo/images/plus.svg")); |
| 337 | + CustomButton->setAutoRaise(true); |
| 338 | + auto TitleBar = DockArea->titleBar(); |
| 339 | + int Index = TitleBar->indexOf(TitleBar->tabBar()); |
| 340 | + TitleBar->insertWidget(Index + 1, CustomButton); |
| 341 | + QObject::connect(CustomButton, &QToolButton::clicked, [=]() |
| 342 | + { |
| 343 | + auto DockWidget = createEditorWidget(ui.menuView); |
| 344 | + DockWidget->setFeature(ads::CDockWidget::DockWidgetDeleteOnClose, true); |
| 345 | + DockManager->addDockWidgetTabToArea(DockWidget, DockArea); |
| 346 | + _this->connect(DockWidget, SIGNAL(closeRequested()), SLOT(onEditorCloseRequested())); |
| 347 | + }); |
322 | 348 |
|
323 | 349 | // Test dock area docking |
324 | 350 | auto RighDockArea = DockManager->addDockWidget(ads::RightDockWidgetArea, createLongTextLabelDockWidget(ViewMenu), TopDockArea); |
|
0 commit comments