setMenuBar() of QMainWindow will take ownership of the menu and will delete it, you should not reuse it. The solution will be to create a new menu every time the focus changes and then set it as menu bar. Write a factory function to create menus, something like
createMenuBar1()
{
// add actions
return menu;
}
{
...
updateMenuBar(createMenuBar1());
...
updateMenuBar(createMenuBar2());
...
updateMenuBar(createMenuBar3());
...
updateMenuBar(createMenuBar1());
...
}
createMenuBar1()
{
QMenuBar * menu = new QMenuBar();
// add actions
return menu;
}
{
...
updateMenuBar(createMenuBar1());
...
updateMenuBar(createMenuBar2());
...
updateMenuBar(createMenuBar3());
...
updateMenuBar(createMenuBar1());
...
}
To copy to clipboard, switch view to plain text mode
Bookmarks