pose pas de problème particulier en centralisant le code dans une bibliothèque
JavaScript. Par contre, comment faire pour désactiver une telle action de manière
globale ? Le code qui l'effectue doit se souvenir des deux emplacements où l'action est
possible.
Le composant Action permet de factoriser le code : toutes les données d'une action sont
stockées d'un côté (code à exécuter, texte, icône, raccourci clavier, principalement), les
menus et outils y font appel. Quand l'action est désactivée, elle l'est partout. Quand elle
est cochée (comme l'option gras dans un traitement de texte), elle l'est partout.
De manière générale, une action reprend tous les champs définis précédemment (dans
les boutons et entrées de menu). Le code effectué par l'action est donné par le
gestionnaire de signal onTriggered (comme pour une entrée de menu, contrairement à
un bouton).
Action {
id: quitAction
text: "Quitter"
onTriggered: Qt.quit()
shortcut: "Ctrl+Q" // StandardKey.Quit
}
Ensuite, cette même action peut être exploitée depuis plusieurs endroits en utilisant la
propriété action de MenuItem et de ToolButton :
menuBar: MenuBar {
Menu {
title: "&Fichier"
MenuItem { action: quitAction }
}
}
toolBar: ToolBar {
RowLayout {
// …
ToolButton { action: quitAction }
}
}
Fonctionnellement, l'application est identique pour l'utilisateur ; par contre, le code est
plus facile à écrire (ici, pas de duplication du texte à afficher dans le menu et dans la
barre d'outils).
Note > Qt Quick Controls 2 n'a pas encore de correspondance pour le composant
Action — le plus proche est Shortcut, qui fonctionne uniquement pour les raccourcis
clavier. Il n'existe plus de manière de factoriser le code pour toutes les actions, mais
310
JavaScript. Par contre, comment faire pour désactiver une telle action de manière
globale ? Le code qui l'effectue doit se souvenir des deux emplacements où l'action est
possible.
Le composant Action permet de factoriser le code : toutes les données d'une action sont
stockées d'un côté (code à exécuter, texte, icône, raccourci clavier, principalement), les
menus et outils y font appel. Quand l'action est désactivée, elle l'est partout. Quand elle
est cochée (comme l'option gras dans un traitement de texte), elle l'est partout.
De manière générale, une action reprend tous les champs définis précédemment (dans
les boutons et entrées de menu). Le code effectué par l'action est donné par le
gestionnaire de signal onTriggered (comme pour une entrée de menu, contrairement à
un bouton).
Action {
id: quitAction
text: "Quitter"
onTriggered: Qt.quit()
shortcut: "Ctrl+Q" // StandardKey.Quit
}
Ensuite, cette même action peut être exploitée depuis plusieurs endroits en utilisant la
propriété action de MenuItem et de ToolButton :
menuBar: MenuBar {
Menu {
title: "&Fichier"
MenuItem { action: quitAction }
}
}
toolBar: ToolBar {
RowLayout {
// …
ToolButton { action: quitAction }
}
}
Fonctionnellement, l'application est identique pour l'utilisateur ; par contre, le code est
plus facile à écrire (ici, pas de duplication du texte à afficher dans le menu et dans la
barre d'outils).
Note > Qt Quick Controls 2 n'a pas encore de correspondance pour le composant
Action — le plus proche est Shortcut, qui fonctionne uniquement pour les raccourcis
clavier. Il n'existe plus de manière de factoriser le code pour toutes les actions, mais
310
