самый очевидный вариант — спуститься в нативный код
Конечно спускался, но ничего очевидного не увидел
void QCocoaMenu::insertNative(QCocoaMenuItem *item, QCocoaMenuItem *beforeItem)
{
[item->nsItem() setTarget:m_delegate];
if (!item->menu())
[item->nsItem() setAction:@selector(itemFired:)];
if (item->isMerged())
return;
if ([item->nsItem() menu]) {
qWarning() << Q_FUNC_INFO << "Menu item is already in a menu, remove it from the other menu first before inserting";
return;
}
...
Breakpoint на qWarning - пожалуйста, но почему айтем присутствует, почему он не merged и почему вообще вызывается insertNative - раскопать непросто
Исправить баг.
Слишком прямолинейно (с грыжей на танк). Попробую сначала воспроизведется ли на простом примере