📄 q3action.cpp
字号:
id = menu->insertItem(iconSet(), text(), popup); else id = menu->insertItem(iconSet(), menuText(), popup); } else { if (menuText().isEmpty()) id = menu->insertItem(text(), popup); else id = menu->insertItem(menuText(), popup); } addedTo(menu->indexOf(id), menu); Q3ActionGroupPrivate::MenuItem *item = new Q3ActionGroupPrivate::MenuItem; item->id = id; item->popup = popup; d->menuitems.append(item); } else { popup = (Q3PopupMenu*)w; } for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) { // #### do an addedTo(index, popup, action), need to find out index (*it)->addTo(popup); } return true; } if (::qobject_cast<QMenu*>(w)) { QMenu *menu = (QMenu*)w; if (d->dropdown) { Q3ActionGroupPrivate::Action4Item *ai = new Q3ActionGroupPrivate::Action4Item; if(!ai->action) { //static ai->action = menu->menuAction(); if (!iconSet().isNull()) ai->action->setIcon(iconSet()); if (menuText().isEmpty()) ai->action->setText(text()); else ai->action->setText(menuText()); } addedTo(w, w); ai->widget = w; ai->widget->addAction(Q3ActionGroupPrivate::Action4Item::action); d->action4items.append(ai); menu = ai->action->menu(); } for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) (*it)->addTo(menu); return true; } for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) { // #### do an addedTo(index, popup, action), need to find out index (*it)->addTo(w); } return true;}/*! \reimp*/bool Q3ActionGroup::removeFrom(QWidget* w){ for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) (*it)->removeFrom(w);#ifndef QT_NO_TOOLBAR if (::qobject_cast<Q3ToolBar*>(w)) { QList<QComboBox*>::Iterator cb(d->comboboxes.begin()); while (cb != d->comboboxes.end()) { QComboBox *box = *cb; ++cb; if (box->parentWidget() == w) delete box; } QList<QToolButton*>::Iterator mb(d->menubuttons.begin()); while (mb != d->menubuttons.end()) { QToolButton *btn = *mb; ++mb; if (btn->parentWidget() == w) delete btn; } } else#endif if (::qobject_cast<Q3PopupMenu*>(w)) { QList<Q3ActionGroupPrivate::MenuItem*>::Iterator pu(d->menuitems.begin()); while (pu != d->menuitems.end()) { Q3ActionGroupPrivate::MenuItem *mi = *pu; ++pu; if (d->dropdown && mi->popup) ((Q3PopupMenu*)w)->removeItem(mi->id); delete mi->popup; } } if (::qobject_cast<QMenu*>(w)) { QList<Q3ActionGroupPrivate::Action4Item*>::Iterator it(d->action4items.begin()); Q3ActionGroupPrivate::Action4Item *a4i; while (it != d->action4items.end()) { a4i = *it; ++it; if (a4i->widget == w) { a4i->widget->removeAction(a4i->action); d->action4items.removeAll(a4i); delete a4i; } } } return true;}/*! \internal*/void Q3ActionGroup::childToggled(bool b){ if (!isExclusive()) return; Q3Action* s = qobject_cast<Q3Action*>(sender()); if (!s) return; if (b) { if (s != d->selected) { d->selected = s; for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) { if ((*it)->isToggleAction() && (*it) != s) (*it)->setOn(false); } emit selected(s); } } else { if (s == d->selected) { // at least one has to be selected s->setOn(true); } }}/*! \internal*/void Q3ActionGroup::childActivated(){ Q3Action* s = qobject_cast<Q3Action*>(sender()); if (s) { emit activated(s); emit Q3Action::activated(); }}/*! \internal*/void Q3ActionGroup::childDestroyed(){ d->actions.removeAll((Q3Action *)sender()); if (d->selected == sender()) d->selected = 0;}/*! \reimp*/void Q3ActionGroup::setEnabled(bool enable){ if (enable == isEnabled()) return; Q3Action::setEnabled(enable); d->update(this);}/*! \reimp*/void Q3ActionGroup::setToggleAction(bool toggle){ for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) (*it)->setToggleAction(toggle); Q3Action::setToggleAction(true); d->update(this);}/*! \reimp*/void Q3ActionGroup::setOn(bool on){ for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) { Q3Action *act = *it; if (act->isToggleAction()) act->setOn(on); } Q3Action::setOn(on); d->update(this);}/*! \reimp */void Q3ActionGroup::setVisible(bool visible){ Q3Action::setVisible(visible); d->update(this);}/*! \reimp*/void Q3ActionGroup::setIconSet(const QIcon& icon){ Q3Action::setIconSet(icon); d->update(this);}/*! \reimp*/void Q3ActionGroup::setText(const QString& txt){ if (txt == text()) return; Q3Action::setText(txt); d->update(this);}/*! \reimp*/void Q3ActionGroup::setMenuText(const QString& text){ if (text == menuText()) return; Q3Action::setMenuText(text); d->update(this);}/*! \reimp*/void Q3ActionGroup::setToolTip(const QString& text){ if (text == toolTip()) return; for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) { if ((*it)->toolTip().isNull()) (*it)->setToolTip(text); } Q3Action::setToolTip(text); d->update(this);}/*! \reimp*/void Q3ActionGroup::setWhatsThis(const QString& text){ if (text == whatsThis()) return; for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) { if ((*it)->whatsThis().isNull()) (*it)->setWhatsThis(text); } Q3Action::setWhatsThis(text); d->update(this);}/*! \reimp*/void Q3ActionGroup::childEvent(QChildEvent *e){ if (!e->removed()) return; Q3Action *action = qobject_cast<Q3Action*>(e->child()); if (!action) return; for (QList<QComboBox*>::Iterator cb(d->comboboxes.begin()); cb != d->comboboxes.end(); ++cb) { for (int i = 0; i < (*cb)->count(); i++) { if ((*cb)->text(i) == action->text()) { (*cb)->removeItem(i); break; } } } for (QList<QToolButton*>::Iterator mb(d->menubuttons.begin()); mb != d->menubuttons.end(); ++mb) { QMenu* popup = (*mb)->popup(); if (!popup) continue; action->removeFrom(popup); } for (QList<Q3ActionGroupPrivate::MenuItem*>::Iterator mi(d->menuitems.begin()); mi != d->menuitems.end(); ++mi) { Q3PopupMenu* popup = (*mi)->popup; if (!popup) continue; action->removeFrom(popup); } if(QAction *act = Q3ActionGroupPrivate::Action4Item::action) action->removeFrom(act->menu());}/*! \fn void Q3ActionGroup::selected(Q3Action* action) This signal is emitted from exclusive groups when toggle actions change state. The argument is the \a action whose state changed to "on". \sa setExclusive(), isOn() Q3Action::toggled()*//*! \fn void Q3ActionGroup::activated(Q3Action* action) This signal is emitted from groups when one of its actions gets activated. The argument is the \a action which was activated. \sa setExclusive(), isOn() Q3Action::toggled()*//*! \internal*/void Q3ActionGroup::internalComboBoxActivated(int index){ if (index == -1) return; Q3Action *a = 0; for (int i = 0; i <= index && i < (int)d->actions.count(); ++i) { a = d->actions.at(i); if (a && a->objectName() == QLatin1String("qt_separator_action")) index++; } a = d->actions.at(index); if (a) { if (a != d->selected) { d->selected = a; for (QList<Q3Action*>::Iterator it(d->actions.begin()); it != d->actions.end(); ++it) { if ((*it)->isToggleAction() && (*it) != a) (*it)->setOn(false); } if (a->isToggleAction()) a->setOn(true); emit activated(a); emit Q3Action::activated(); emit a->activated(); if (a->isToggleAction()) emit selected(d->selected); } else if (!a->isToggleAction()) { emit activated(a); emit Q3Action::activated(); emit a->activated(); } a->clearStatusText(); }}/*! \internal*/void Q3ActionGroup::internalComboBoxHighlighted(int index){ Q3Action *a = 0; for (int i = 0; i <= index && i < (int)d->actions.count(); ++i) { a = d->actions.at(i); if (a && a->objectName() == QLatin1String("qt_separator_action")) index++; } a = d->actions.at(index); if (a) a->showStatusText(a->statusTip()); else clearStatusText();}/*! \internal*/void Q3ActionGroup::internalToggle(Q3Action *a){ int index = d->actions.indexOf(a); if (index == -1) return; int lastItem = index; for (int i=0; i<lastItem; ++i) { Q3Action *action = d->actions.at(i); if (action->objectName() == QLatin1String("qt_separator_action")) --index; } for (QList<QComboBox*>::Iterator it(d->comboboxes.begin()); it != d->comboboxes.end(); ++it) (*it)->setCurrentItem(index);}/*! \internal*/void Q3ActionGroup::objectDestroyed(){ const QObject* obj = sender(); d->menubuttons.removeAll((QToolButton *)obj); for (QList<Q3ActionGroupPrivate::MenuItem *>::Iterator mi(d->menuitems.begin()); mi != d->menuitems.end(); ++mi) { if ((*mi)->popup == obj) { d->menuitems.removeAll(*mi); delete *mi; break; } } d->popupmenus.removeAll((Q3PopupMenu*)obj); d->comboboxes.removeAll((QComboBox*)obj);}/*! This function is called from the addTo() function when it has created a widget (\a actionWidget) for the child action \a a in the \a container.*/void Q3ActionGroup::addedTo(QWidget *actionWidget, QWidget *container, Q3Action *a){ Q_UNUSED(actionWidget); Q_UNUSED(container); Q_UNUSED(a);}/*! \overload This function is called from the addTo() function when it has created a menu item for the child action at the index position \a index in the popup menu \a menu.*/void Q3ActionGroup::addedTo(int index, Q3PopupMenu *menu, Q3Action *a){ Q_UNUSED(index); Q_UNUSED(menu); Q_UNUSED(a);}/*! \reimp \overload
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -