Unterstützt Qt die Interaktion mit der nativen Menüleiste eines beliebigen Fensters (z. B. QWidget) unter Windows und Linux?Qt und native Menüs
Es sieht so aus, als ob Qt das Menü als nur ein weiteres Kind-Widget behandelt, das im übergeordneten Fenster platziert wird. Das heißt, um eine Menüleiste zu haben, muss ich etwas Platz dafür im Kundenbereich des Fensters reservieren. Das macht keinen Sinn auf Mac, mit seinem Menü oben auf dem Bildschirm. Unter Windows macht es wenig Sinn - das Menü, wie es vom System implementiert wird, befindet sich außerhalb des Client-Bereichs. Nicht sicher, was das native Modell unter Linux ist.
Gut zu wissen. Wie kann ich die native Menüleiste eines Fensters zuweisen oder darauf zugreifen? setMenuBar() ist nur für QLayout und QMainWindow definiert, nicht für ein generisches QWidget. –
Menüs sind nur für QLayout/QMainWindow möglich. Wenn Sie ein kontextsensitives Menü für ein Widget benötigen, fügen Sie eine QAction über QWidget :: addAction hinzu und setzen Sie QWidget :: setContextMenuPolicy (Qt :: ActionsContextMenu). – WolfgangA
Wie kommt es? Jedes QWidget kann ein Top-Level-Fenster sein. Jedes Fenster der obersten Ebene kann ein Menü in Windows enthalten. –