Есть динамическая библиотека, одна из функций которой возвращает указатель на QMenu. Нужно сделать QMenuBar из этого QMenu так, чтобы в нём находились пункты первого уровня QMenu, а из них уже выпадали подменю, соответствующие нужным пунктам. Сейчас делаю так:
foreach (QAction *action, menu->actions()) {
QMenu *submenu = action->menu();
if (submenu) {
menuBar->addMenu(submenu);
} else {
menuBar->addAction(action);
}
}
Этот код создаёт нужный мне QMenuBar. Проблема в том, что QMenu, из которого он создан, может изменяться через время, и эти изменения никак не отражаются в QMenuBar (логично, если он один раз создан и всё). Нужно же сделать так, чтобы при любых изменениях первого уровня объекта QMenu соответствующим образом менялся и QMenuBar. Проблема в том, что у QMenu нет сигналов, которые emit при изменениях. Задача усложняется тем, что объект QMenu создаётся в отдельной библиотеке и изменять её крайне нежелательно, поэтому унаследовать QMenu и override в нём методы типа addAction, чтобы они вызывали сигналы, — это крайняя мера. Есть ли другие способы отслеживания изменений QMenu?