PyQt/QAction & QActionGroup
Description
[modifier | modifier le wikicode]La classe QAction définit un modèle abstrait permettant de représenter une action sur l'interface. Elle peut être utilisée dans une entrée d'un menu ou par l'intermédiaire d'une barre d'outils. La classe QActionGroup permet quant à elle de regrouper un ensemble d'actions qui doivent être exclusives entre elles.
Dans les interfaces utilisateur les commandes peuvent être invoquées par des menus déroulants, des barres d'outils ou des raccourcis clavier. Il n'est pas rare qu'il existe des actions identiques pouvant être invoquées par différents éléments de l'interface, et que ces éléments doivent rester synchronisés. Il est donc utile de représenter ces commandes comme des actions, puis d'ajouter ces actions aux divers éléments de l'interface.
Prenons un exemple : dans un éditeur de texte, l'utilisateur a la possibilité de mettre du texte en gras. Pour cela, il dispose d'une action dans un menu déroulant, d'un bouton dans une barre d'outils et d'un raccourci clavier. En utilisant une action représentant la mise en gras du texte, non seulement on factorise le code, mais en plus cela nous permet lorsque l'utilisateur utilise le raccourci clavier de mettre le bouton de la barre d'outils dans l'état activé. Un objet QAction peut contenir une icône, du texte, une touche accélératrice (raccourci clavier), un texte d'aide (WhatsThis) et un texte pour l'info-bulle. La plupart de ces données peuvent être chargées par l'intermédiaire du constructeur, mais il est aussi possible d'utiliser des méthodes spécifiques pour les modifier.
Les actions peuvent être de deux types : les actions à état (« toggle action »), et les commandes. Une action à état est par exemple le changement d'un texte en gras ou en normal, tandis qu'une commande peut par exemple représenter l'ouverture d'une fenêtre de sélection de fichier. Seules les actions à état émettent le signal toggled() tandis que les deux types d'actions émettent le signal activated(). Les actions peuvent être ajoutées aux éléments graphiques avec la méthode addTo() tandis qu'elles peuvent être supprimées par l'intermédiaire de l'appel à removeFrom().
Constructeur
[modifier | modifier le wikicode]# Constructeurs pour les classes QAction et QActionGroup
QAction ( QObject parent, str name = "" )
QAction ( Qstr menuText, QKeySequence accel, QObject parent, str name = "" )
QAction ( QIconSet icon, Qstr menuText, QKeySequence accel, QObject parent, str name
= "" )
QActionGroup ( QObject parent, str name = "" )
QActionGroup ( QObject parent, char name, bool exclusive )
Exemple
[modifier | modifier le wikicode]Il est très difficile de trouver un exemple mettant en œuvre ces deux classes. Cependant, vous pouvez consulter le code de la section Qt Designer dans laquelle, à partir d'une interface générée avec l'utilitaire Qt Designer, nous créons une petite application. Au sein de cette application nous avons utilisé la classe QAction.