# 6.5. Construire une nouvelle boîte de dialogue

Élaborer une nouvelle boîte de dialogue est très facile si vous êtes déjà familier avec les applications de construction graphique. KDevelop permet de créer visuellement un widget et d'afficher son apparence telle qu'elle se présentera à l'utilisateur. En plus, vous pouvez avoir une prévisualisation de votre widget en sélectionnant "Aperçu" dans le menu "Affichage".

Pour commencer la construction d'une boîte de dialogue ou de n'importe quel widget, passez dans l'Éditeur de boîtes de dialogue et sélectionnez "Nouveau" dans le menu "Fichier". Sélectionnez "Boîte de dialogue Qt/KDE (*.kdevdlg)" dans la boîte de dialogue "Nouveau fichier" et saisissez le nom de fichier de la boîte de dialogue. Construisez votre boîte de dialogue et quand vous avez terminé, sélectionnez "Générer les fichiers sources complets" dans le menu "Construire".

Saisissez ensuite toutes les informations nécessaires dans la boîte de dialogue "Nouvelle boîte de dialogue". Ce sont :

1. l'héritage de la boîte de dialogue. Ceci est nécessaire parce que tout widget dérive au moins de `QWidget`. Au-delà des types de widgets fournis par Qt, vous pouvez hériter, par exemple, d'une classe abstraite que vous avez développée vous-même au sein de votre projet. Dans ce cas, sélectionnez "Personnalisé" et saisissez le chemin menant au fichier d'en-tête dans la zone de saisie en-dessous& ;;

2. le nom de la boîte de dialogue. Ceci définit le nom de la classe pour la boîte de dialogue générée. Sélectionnez un nom de classe décrivant explicitement ce que fait la boîte de dialogue ; au cas où vous héritez de `QDialog`, vous pourriez saisir un nom qui se termine par `Dlg` afin de vous aider à vous souvenir que c'est une boîte de dialogue. Les conventions de nommage devraient néanmoins correspondre à celles de KDE et Qt : utilisez des lettres majuscules pour votre nom de classe. Pour, par exemple, une boîte de sélection de taille de quadrillage (NdT : grid-size selection dialog), vous pourriez saisir `GridSizeDlg`.

3. les noms des fichiers générés. Ceux-ci sont pré-définis lorsque vous donnez le nom de la boîte de dialogue mais peuvent être modifiés utlérieurement. Si vous voulez utiliser d'autres noms de fichiers, la convention de nommage devrait respecter celle de KDE et Qt : les noms des fichiers sont écrits en minuscules et contiennent le nom de la classe afin de se rappeler rapidement quelle classe est à l'intérieur. Les fichiers de données qui doivent être définis contiendront ensuite le code généré qui construira votre boîte de dialogue. Après, vous ne devrez pas éditer ce fichier manuellement ; utilisez le fichier d'implantation pour les ajouts au code de construction de la boîte de dialogue et à l'implantation des méthodes.

La boîte de dialogue s'affiche ensuite sous la forme d'un widget avec un quadrillage. Comme l'éditeur de boîte de dialogue utilise cette grille pour positionner les widgets fils, vous pouvez modifier la taille du quadrillage avec l'entrée "Taille de la grille" dans le menu "Affichage", si la valeur prédéfinie ne vous convient pas.

Sélectionnez ensuite l'onglet "Widgets" dans la partie gauche et cliquez sur le bouton du widget que vous voulez ajouter à votre widget principal. Il apparaît immédiatement dans le coin en haut à gauche du widget principal et il est sélectionné dans un cadre redimensionnable. Ensuite, déplacez ou redimensionnez le widget avec la souris. Le curseur changera pour indiquer quelle action peut être effectuée à sa position courante.

Après avoir terminé la construction, sélectionnez "Générer les fichiers" dans le menu "Construire" ou cliquez sur le bouton correspondant de la barre d'outils . Les fichiers seront ensuite générés à l'endroit prédéfini et inclus dans vos fichiers sources. Une reconstruction ou un "make" compilera tous les fichiers générés dans votre projet et vous pourrez ajouter un appel au constructeur idoine pour créer une instance de la boîte de dialogue ou du widget. Pour les projets KDE, toutes les propriétés du widget qui seront visibles, par exemple le texte d'une étiquette, sont définies avec la macro `i18n()` de `kapp.h` pour permettre l'internationalisation. C'est pourquoi, vous devriez faire un "Exécuter make messages et fusionner" lorsque vous avez terminé la construction et l'implantation.

Pendant la création d'une boîte de dialogue ou d'un widget, vous devriez respecter les règles suivantes :

- Essayez de rester homogène ! C'est probablement la règle la plus importante dans la constructions d'éléments graphiques. Souvenez-vous qu'un utilisateur n'acceptera une application que si elle est simple à comprendre, quelle que soit la complexité des services qu'elle rend& ;;

- Ajoutez de l'aide partout où c'est possible avec des bulles d'aide, de l'aide "Qu'est-ce que c'est...?" ou de l'Aide rapide. Cela permet d'obtenir directement des informations sur l'utilité des composants graphiques& ;;

- Surveillez le focus du clavier ! Le générateur ne gère pas cela - cela doit être pris en considération lors de la construction d'un widget : sinon vous devrez réordonner manuellement votre code d'initialisation ce qui n'est pas une tâche très amusante. Le focus du clavier sur n'importe quel widget signifie l'ordre dans lequel les éléments obtiennent le focus d'entrée du clavier lorsque l'utilisateur appuie sue les touches "tab" ou "shift+tab". Ce serait très désagréable si le focus sautait d'un widget à un autre au lieu de passer au widget visible suivant, au-dessous ou à droite du widget courant. C'est pourquoi, vous devriez construire vos widgets de haut en bas et de gauche à droite afin de préserver une certaine homogénéité du focus.