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

Qt Code:
  1. createMenuBar1()
  2. {
  3. QMenuBar * menu = new QMenuBar();
  4.  
  5. // add actions
  6.  
  7. return menu;
  8. }
  9.  
  10. {
  11. ...
  12. updateMenuBar(createMenuBar1());
  13. ...
  14. updateMenuBar(createMenuBar2());
  15. ...
  16. updateMenuBar(createMenuBar3());
  17. ...
  18. updateMenuBar(createMenuBar1());
  19. ...
  20. }
To copy to clipboard, switch view to plain text mode