18 QDockWidget* dockWidget = this->createDockWidget(widget);
21 this->tabifyWidget(dockWidget);
23 mDockWidgets.insert(dockWidget);
24 dockWidget->setVisible(
false);
31 QDockWidget* DockWidgets::createDockWidget(QWidget* widget)
33 QScrollArea* scroller = this->addVerticalScroller(widget);
34 QDockWidget* dockWidget =
new QDockWidget(widget->windowTitle(), mParent);
35 connect(widget, &QWidget::windowTitleChanged,
this, &DockWidgets::onConsoleWindowTitleChanged);
36 dockWidget->setObjectName(widget->objectName() +
"DockWidget");
37 dockWidget->setFocusPolicy(Qt::StrongFocus);
38 dockWidget->setWidget(scroller);
42 void DockWidgets::onConsoleWindowTitleChanged(
const QString & title)
44 QWidget* widget =
dynamic_cast<QWidget*
>(sender());
46 for (
int i=0; i<3; ++i)
50 QDockWidget* dockWidget =
dynamic_cast<QDockWidget*
>(widget);
53 dockWidget->setWindowTitle(title);
56 widget = widget->parentWidget();
60 QScrollArea* DockWidgets::addVerticalScroller(QWidget *widget)
62 QScrollArea* scroller =
new QScrollArea(NULL);
63 scroller->setWidget(widget);
64 widget->setParent(scroller);
65 scroller->setWidgetResizable(
true);
66 scroller->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
67 QSizePolicy policy = scroller->sizePolicy();
68 policy.setHorizontalPolicy(QSizePolicy::Minimum);
69 scroller->setSizePolicy(policy);
73 void DockWidgets::tabifyWidget(QDockWidget* dockWidget)
75 for (std::set<QDockWidget*>::iterator iter = mDockWidgets.begin(); iter != mDockWidgets.end(); ++iter)
77 if (mParent->dockWidgetArea(*iter) == Qt::LeftDockWidgetArea)
79 mParent->tabifyDockWidget(*iter, dockWidget);
87 this->mDockWidgets.erase(dockWidget);
92 for (std::set<QDockWidget*>::iterator iter = mDockWidgets.begin(); iter != mDockWidgets.end(); ++iter)
94 if (action == (*iter)->toggleViewAction())
104 for (std::set<QDockWidget*>::iterator iter = mDockWidgets.begin(); iter != mDockWidgets.end(); ++iter)