#include #include #include #include #include #include "DockManager.h" class MainWindow : public QMainWindow { private: ads::CDockManager* m_DockManager = nullptr; protected: virtual void closeEvent(QCloseEvent *event) override { QMainWindow::closeEvent(event); if (m_DockManager) { m_DockManager->deleteLater(); } } public: void setDockManager(ads::CDockManager* DockManager) {m_DockManager = DockManager;} }; int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; ads::CDockManager::setConfigFlag(ads::CDockManager::FocusHighlighting, true); ads::CDockManager::setConfigFlag(ads::CDockManager::AllTabsHaveCloseButton, true); auto dockManager = new ads::CDockManager(&w); w.setDockManager(dockManager); QObject::connect(dockManager, &ads::CDockManager::focusedDockWidgetChanged, [] (ads::CDockWidget* old, ads::CDockWidget* now) { static int Count = 0; qDebug() << Count++ << " CDockManager::focusedDockWidgetChanged old: " << (old ? old->objectName() : "-") << " now: " << now->objectName() << " visible: " << now->isVisible(); now->widget()->setFocus(); }); QAction *action = new QAction("New Delete Dock Widget On Close", &w); w.menuBar()->addAction(action); int i = 0; QObject::connect(action, &QAction::triggered, [&]() { auto dw = new ads::CDockWidget(QStringLiteral("test doc %1").arg(i++), &w); auto editor = new QTextEdit(QStringLiteral("lorem ipsum..."), dw); dw->setWidget(editor); dw->setFeature(ads::CDockWidget::DockWidgetDeleteOnClose, true); auto area = dockManager->addDockWidgetTab(ads::CenterDockWidgetArea, dw); qDebug() << "doc dock widget created!" << dw << area; }); auto dw = new ads::CDockWidget(QStringLiteral("test doc %1").arg(i++), &w); auto editor = new QTextEdit(QStringLiteral("recreated lorem ipsum......"), dw); dw->setWidget(editor); dw->setFeature(ads::CDockWidget::RecreateContentsWidgetOnCloseAndOpen, true); dw->setWidgetFactory([](QWidget* dw){ static int timesRecreated = 0; return new QTextEdit(QStringLiteral("recreated lorem ipsum... times %1").arg(++timesRecreated), dw); }); auto area = dockManager->addDockWidgetTab(ads::CenterDockWidgetArea, dw); qDebug() << "RecreateContentsWidgetOnCloseAndOpen dock widget created!" << dw << area; action = new QAction("Toggle Recreate Contents Widget On Close and Open", &w); w.menuBar()->addAction(action); QObject::connect(action, &QAction::triggered, [dw]() { dw->toggleView(dw->isClosed()); qDebug() << QString("dock widget %1! contents widget %2!").arg(dw->isClosed() ? "closed" : "open", dw->widget() ? "created" : "deleted"); }); action = new QAction("New", &w); w.menuBar()->addAction(action); QObject::connect(action, &QAction::triggered, [&]() { auto dw = new ads::CDockWidget(QStringLiteral("test %1").arg(i++), &w); auto editor = new QTextEdit(QStringLiteral("lorem ipsum..."), dw); dw->setWidget(editor); auto area = dockManager->addDockWidgetTab(ads::CenterDockWidgetArea, dw); qDebug() << "dock widget created!" << dw << area; }); w.show(); return a.exec(); }