void SideActionBar::addAction(QAction *action, QWidget *widget, const QString &id, const QString &title, QList<QAction *> widgetActions) { RotationToolButton *btn = new RotationToolButton; btn->setDefaultAction(action); if (area == Qt::LeftDockWidgetArea) { btn->setRotation(RotationToolButton::CounterClockwise); } else if (area == Qt::RightDockWidgetArea) { btn->setRotation(RotationToolButton::Clockwise); } SideDockWidget *dock = new SideDockWidget(iconSize, window); dock->setObjectName(QString("side_dock_%1").arg(id)); dock->setWindowTitle(title); dock->setFeatures(QDockWidget::DockWidgetClosable); dock->hide(); dock->createMenu(area); window->addDockWidget(area,dock); connect(dock,SIGNAL(visibilityChanged(bool)),this,SLOT(dockVisible(bool))); connect(dock,SIGNAL(moveActionTo(Qt::DockWidgetArea,QAction*)),this,SIGNAL(moveActionTo(Qt::DockWidgetArea,QAction*))); connect(dock,SIGNAL(currenActionChanged(QAction*,QAction*)),this,SLOT(currenActionChanged(QAction*,QAction*))); SideActionState *state = new SideActionState; state->toolBtn = btn; state->widget = widget; state->id = id; state->title = title; state->widgetActions = widgetActions; m_actionStateMap.insert(action,state); dock->setCheckedAction(action); toolBar->insertWidget(spacerAct,btn); if (toolBar->isHidden() && !bHideToolBar) { toolBar->show(); } m_dockList.append(dock); connect(action,SIGNAL(toggled(bool)),this,SLOT(toggledAction(bool))); //update actions foreach(SideDockWidget *dock, m_dockList) { dock->setActions(m_actionStateMap); }
void ActionToolBar::addAction(QAction *action, const QString &title, bool split) { RotationToolButton *btn = new RotationToolButton; btn->setDefaultAction(action); if (area == Qt::LeftDockWidgetArea) { btn->setRotation(RotationToolButton::CounterClockwise); } else if (area == Qt::RightDockWidgetArea) { btn->setRotation(RotationToolButton::Clockwise); } m_actionWidgetMap.insert(action,btn); if (split) { dock2->addAction(action,title); toolBar->addWidget(btn); } else { dock1->addAction(action,title); toolBar->insertWidget(spacerAct,btn); } if (toolBar->isHidden() && !bHideToolBar) { toolBar->show(); } }