ToolMainWindow::ToolMainWindow(QWidget *parent) : QMainWindow(parent) { m_areaToolBar.insert(Qt::TopDockWidgetArea,new ActionToolBar(this,Qt::TopDockWidgetArea)); m_areaToolBar.insert(Qt::BottomDockWidgetArea,new ActionToolBar(this,Qt::BottomDockWidgetArea)); m_areaToolBar.insert(Qt::LeftDockWidgetArea,new ActionToolBar(this,Qt::LeftDockWidgetArea)); m_areaToolBar.insert(Qt::RightDockWidgetArea,new ActionToolBar(this,Qt::RightDockWidgetArea)); QMapIterator<Qt::DockWidgetArea,ActionToolBar*> it(m_areaToolBar); while(it.hasNext()) { it.next(); Qt::DockWidgetArea area = it.key(); ActionToolBar *actionToolBar = it.value(); addToolBar((Qt::ToolBarArea)area,actionToolBar->toolBar); addDockWidget(area,actionToolBar->dock1); addDockWidget(area,actionToolBar->dock2); if (area == Qt::TopDockWidgetArea || area == Qt::BottomDockWidgetArea) splitDockWidget(actionToolBar->dock1,actionToolBar->dock2,Qt::Horizontal); else splitDockWidget(actionToolBar->dock1,actionToolBar->dock2,Qt::Vertical); connect(actionToolBar,SIGNAL(moveActionTo(Qt::DockWidgetArea,QAction*,bool)),this,SLOT(moveToolWindow(Qt::DockWidgetArea,QAction*,bool))); } this->setDockNestingEnabled(true); this->setDockOptions(QMainWindow::AllowNestedDocks); m_statusBar = new QStatusBar; m_hideSideAct = new QAction(tr("Hide Sidebars"),this); m_hideSideAct->setIcon(QIcon("icon:images/hidesidebar.png")); m_hideSideAct->setCheckable(true); QToolButton *btn = new QToolButton; btn->setDefaultAction(m_hideSideAct); btn->setStyleSheet("QToolButton {border:0}" "QToolButton:checked {background : qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:0, stop:0 rgba(55, 57, 59, 255), stop:1 rgba(255, 255, 255, 255));}"); m_statusBar->addWidget(btn); m_statusBar->setContentsMargins(0,0,0,0); ActionToolBar *bar = m_areaToolBar.value(Qt::BottomDockWidgetArea); if (bar) { m_statusBar->addWidget(bar->toolBar,1); } this->setStatusBar(m_statusBar); connect(m_hideSideAct,SIGNAL(toggled(bool)),this,SLOT(hideSideBar(bool))); }
void MainWindow::CreateDockWindows() { // "Objects" widget _objectsWidget = new QDockWidget(tr("Objects"), this); addDockWidget(Qt::RightDockWidgetArea, _objectsWidget, Qt::Vertical); _objectsListBox = new QspListBox(this); _objectsWidget->setWidget(_objectsListBox); // "Actions" widget _actionsWidget = new QDockWidget(tr("Actions"), this); addDockWidget(Qt::BottomDockWidgetArea, _actionsWidget, Qt::Vertical); _actionsListBox = new QspListBox(this); _actionsWidget->setWidget(_actionsListBox); // "Additional desc" widget _descWidget = new QDockWidget(tr("Additional desc"), this); addDockWidget(Qt::BottomDockWidgetArea, _descWidget, Qt::Horizontal); _descTextBox = new QspTextBox(this); _descWidget->setWidget(_descTextBox); // "Input area" widget _inputWidget = new QDockWidget(tr("Input area"), this); addDockWidget(Qt::BottomDockWidgetArea, _inputWidget, Qt::Vertical); _inputTextBox = new QspInputBox(this); _inputWidget->setWidget(_inputTextBox); splitDockWidget(_actionsWidget, _inputWidget, Qt::Vertical); }