diff --git a/src/plugins/common/core/dfmplugin-menu/extendmenuscene/extendmenuscene.cpp b/src/plugins/common/core/dfmplugin-menu/extendmenuscene/extendmenuscene.cpp index 01fe900c6c..45f63dcf6e 100644 --- a/src/plugins/common/core/dfmplugin-menu/extendmenuscene/extendmenuscene.cpp +++ b/src/plugins/common/core/dfmplugin-menu/extendmenuscene/extendmenuscene.cpp @@ -273,6 +273,23 @@ bool ExtendMenuScene::create(QMenu *parent) //自动释放 action->setParent(parent); + auto actions = d->childActions(action); + d->extendChildActions.append(actions); + + bool isExist = false; + for (auto existAction : d->extendActions) { + //名字相同的菜单 + if (action->text() == existAction->text() && existAction->menu()) { + isExist = true; + for (QAction *subaction : action->menu()->actions()) { + // 合并名字相同的菜单 + existAction->menu()->addAction(subaction); + } + } + } + if (isExist) + continue; + //记录分隔线 if (actionData.separator() != DCustomActionDefines::kNone) d->cacheActionsSeparator.insert(action, actionData.separator()); @@ -290,9 +307,6 @@ bool ExtendMenuScene::create(QMenu *parent) action->setProperty(kActionPosInMenu, pos); } - auto actions = d->childActions(action); - d->extendChildActions.append(actions); - d->extendActions.append(action); }