Qt prend-il en charge l'interaction avec la barre de menus native d'une fenêtre arbitraire (par exemple QWidget) sous Windows et Linux?Qt et menus natifs
Il semble que Qt traite le menu comme étant simplement un autre widget enfant à placer sur la fenêtre parente. Autrement dit, pour avoir une barre de menu, je dois lui réserver de l'espace dans la zone client de la fenêtre. Cela n'a aucun sens sur Mac, avec son menu en haut de l'écran. Sous Windows, cela n'a aucun sens - le menu, tel qu'il est implémenté par le système, est en dehors de la zone client. Vous ne savez pas quel est le modèle natif sous Linux. Qt supporte les menus natifs sur Mac et sur Windows.
Bon à savoir. Alors, comment attribuer ou accéder à la barre de menu native d'une fenêtre? setMenuBar() n'est défini que pour QLayout et QMainWindow, pas pour un QWidget générique. –
Les menus ne sont possibles que pour QLayout/QMainWindow. Si vous avez besoin d'un menu contextuel pour un widget, ajoutez un QAction via QWidget :: addAction et définissez QWidget :: setContextMenuPolicy (Qt :: ActionsContextMenu). – WolfgangA
Comment ça se fait? Chaque QWidget peut être une fenêtre de niveau supérieur. Chaque fenêtre de niveau supérieur peut avoir un menu dans Windows. –