J'ai une application qui fonctionne à la fois sur Windows et Mac. L'application est écrite en QML. Le composant le plus externe de mon code QML est un ApplicationWindow
. L'API du composant ApplicationWindow
a une propriété appelée menuBar
. Voici un exemple fictif, qui reproduit cela avec un MenuBar
et quitter Action
:Comment QML gère-t-il la sortie de l'application de la barre de menu sur Mac?
ApplicationWindow {
id: _applicationWindow
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Component.onCompleted: {
console.info("ApplicationWindow completed.")
}
menuBar: MenuBar {
Menu {
title: "File"
MenuItem {
action: Action {
id: _myQuttingAction
text: "Quit MyApp"
shortcut: "Ctrl+Q"
onTriggered: {
// deinit...
console.info("I got called!")
Qt.quit()
}
}
}
}
}
}
Quand je lance mon application sur Mac les titres haut de la barre de menus suivants apparaissent:
Apple Icon menu | MyApp | File
Si Je décroche le menu "Fichier" c'est ce que je reçois:
Comme vous pouvez le voir le menu déroulant est vide. En fait, il n'est pas vide car il est pressable et si je le presse, il quitte mon application avec tous les appels deinit dans l'événement onTriggered
de l'action.
Si je descends le menu "MyApp", en bas je vois "Quitter MyApp" avec le raccourci Cmd+Q
. Si j'appuie sur ceci, cela ferme aussi mon application, mais sans appeler l'événement onTriggered
de mon action, ainsi ma vraie application se bloque à la fermeture.
Malheureusement, en appuyant sur Cmd+Q
appelle également le quitter de la "MyApp" pas mon action spécifiée.
Sous Windows, je n'ai pas ce problème du tout et "Quit MyApp" apparaît dans le menu "Fichier" et fait ce que je m'attends à faire.
J'ai essayé de google ce problème et j'ai lu la documentation sans succès pour le moment. Quelqu'un sait ce qui se passe ici?
Salut @dtech, le réglage 'close.accepted = false' fait que mon application quitte, même en essayant avec mon exemple factice ci-dessus. – Silex
Pourquoi la chaîne "Quitter MyApp" n'apparaît-elle pas dans le menu "Fichier"? – Silex
@Silex voir la mise à jour, sauf que je suis actuellement à court d'idées, quelqu'un d'autre pourrait être en mesure d'aider. – dtech