Page suivante Page précédente Table des matières
Les barres de menus et les barres d'outils font partie des éléments les plus importants d'une application pour permettre de travailler avec une structure de document. En règle générale, vous devriez rendre toutes les fonctions disponibles via la barre de menus. Les méthodes qui peuvent ne pas être disponibles à un certain moment de la vie de l'application devraient aussi être désactivées.
De plus, une application ne peut contenir qu'une seule barre de menus mais plusieurs barres d'outils. D'un autre côté, les barres d'outils devraient contenir uniquement les commandes les plus fréquemment utilisées, représentées par des icônes ou fournir des méthodes à accès rapide comme les listes déroulantes pour sélectionner des valeurs.
Chaque entrée, que ce soit une entrée de menu ou un élément d'une barre d'outils, possède un identificateur de ressource (NdT : ID) qui est une valeur entière. Comme ces valeurs ne peuvent pas être utilisées deux fois, elles sont définies par des macros où les valeurs numériques sont remplacées par un nom d'identificateur descriptif qui peut alors être utilisé dans le code source.
Tous les identificateurs de ressource sont regroupés dans le fichier resource.h
où
vous pouvez contrôler les valeurs utilisées. De toute façon, le compilateur vous avertira
si vous avez utilisé deux fois la même valeur pour construire des entrées. Le fichier de
ressource devrait aussi contenir tous les accélérateurs
de menu définis
par les macros de remplacement IDK. Voici un exemple :
(resource.h) #define ID_VIEW_TOOLBAR 12010 (kscribble.cpp) // menu entry Toolbar in the "view" menubar menu view_menu->insertItem(i18n("&Toolbar"), ID_VIEW_TOOLBAR);
Ceci insère l'entrée "Toolbar" au menu popup "View" de la barre de menus dans l'application kscribble. Le nom de l'identificateur de ressource est géré pour contenir le nom du menu et le nom de l'action. Le symbole & (NdT : ampersand) est placé devant la lettre qui fait office d'accélérateur clavier et l'entrée elle-même est entourée par la macro i18n() pour l'internationalisation.
Lors de l'activation de l'élément de menu, le "switch" de commandCallback() est appelé avec le numéro d'identifiant. Ici, vous devez ajouter une valeur de comparaison correspondante avec la méthode que vous voulez exécuter lors de l'activation de l'entrée du menu :
case ID_VIEW_TOOLBAR: slotViewToolBar(); break;
Note : vous n'avez pas besoin d'utiliser le système d'identifiants
(NdT : ID system). Si aucun identifiant n'est donné, le menu est numéroté automatiquement.
L'architecture de KDevelop l'utilise car il permet d'accéder aux identifiants de menu
ou de barre d'outils pour créer des cas de switch
qui sélectionnent le slot
à appeler lors du signal activated()
pour les menus et clicked()
pour les
boutons de la barre d'outils. La connexion peut aussi être faite directement
en utilisant les méthodes fournies par les classes fournissant les menus et les
barres d'outils.
Une nouvelle barre de menus est ajoutée à une application de la façon suivante :
QPopupMenu
pour le pointeur dans initMenuBar()
à l'emplacement où votre barre de menus doit apparaîtrecommandCallback()
et statusCallback()
au menu
à la fin de initMenuBar()
commandCallback()
et statusCallback()
.
Des boutons peuvent être ajoutés à une barre d'outils comme des entrées à un menu, à la
différence que la méthode utilisée est insertButton()
et qu'elle prend en paramètres
une icône de bouton et un texte de bulle d'aide au lieu d'un texte de menu.
Les icônes que vous voulez utiliser peuvent être chargées par KIconLoader
;
KApplication
offre aussi les macros ICON()
et Icon()
pour accéder au
chargeur d'icônes et charger l'icône. Ces macros prennent le nom du fichier de l'icône
en paramètre pour charger l'icône à partir du système de fichiers de KDE, dans un certain
ordre (voir KIconLoader
pour l'ordre de recherche).
Les bibliothèques de KDE offrent aussi un ensemble de boutons de barre d'outils qui peuvent être utilisés pour des actions standards. Au cas où elles ne vous conviendraient pas, vous devrez dessiner vos propres icônes. KDevelop permet cela en sélectionnant "Nouveau" dans le menu "Fichier", puis en sélectionnant Pixmap comme type de fichier. Souvent, vous placerez les icônes de votre barre d'outils dans un sous-dossier "toolbar" de votre projet et les installerez dans le dossier toolbar spécifique à votre application.
Les projets KDevelop utilisent déjà la barre d'état en affichant des messages sur les
entrées du menu et sur les boutons de la barre d'outils. Quand vous ajoutez une
entrée de menu, ajoutez aussi un message d'état dans la méthode statusCallback()
.
statusCallback()
utilise la méthode slotStatusHelpMsg()
pour afficher un
message dans la barre d'état pendant 2 secondes. Lorsque vous exécutez une commande,
vous devriez utiliser la méthode slotStatusMsg()
dès le début avec la chaîne de
caractères décrivant ce que votre application fait ; avant un "return" ou la fin de
la méthode, vous devrez réinitialiser le message dans la barre d'état en appelant la
même méthode avec la chaîne de caractères "Ready".
Les raccourcis
clavier sont une chose très professionnelle que
vous devriez toujours ajouter à votre application. Ils sont principalement utilisés par
les utilisateurs expérimentés qui veulent travailler plus vite avec leurs applications
et veulent apprendre des raccourcis
. Pour cela, les
bibliothèques de KDE contiennent la classe KAccel
qui fournit les
combinaisons de touches des raccourcis
clavier et l'accès aux
raccourcis
clavier standards configurés globalement.
Par défaut, les applications fenêtrées générées par KDevelop utilisent seulement
les raccourcis
clavier standards comme F1 pour accéder à l'aide
en ligne, Ctrl+N pour un Nouveau fichier, etc. Vous devriez d'abord regarder la
liste des raccourcis
clavier déjà définis dans KAccel
avant d'en ajouter un nouveau.
Si votre application contient beaucoup de raccourcis
clavier, vous
devriez les rendre configurables dans le menu "Options", soit en les associant avec
le reste de la configuration de l'application dans un QWidget
, soit tout
seul. Les bibliothèques de KDE fournissent déjà un KKeyChooser
utilisable dans
des boîtes de dialogue à onglet, tandis que KKeyDialog
est une boîte de dialogue
de configuration des raccourcis clavier prête à l'emploi.
Consultez les classes suivantes pour plus d'informations :
KAccel
(kdecore), KKeyChooser
, KKeyDialog
(kdeui)
Page suivante Page précédente Table des matières