Lorsque votre widget est créé, vous voulez probablement l'ajouter au projet afin d'exécuter l'action pour laquelle il a été conçu. Comme un widget peut avoir plusieurs finalités, nous allons considérer les deux cas : un widget héritant de QWidget et un autre de QDialog.
Supposons que vous avez créé un widget qui est un morceau de votre vue principale. S'il remplit toute la zone de vue, vous devez ajouter un pointeur d'instance à la déclaration d'en-tête de votre instance de KTMainWindow qui remplace le widget de vue actuellement défini. Modifiez ensuite le code dans la méthode initView pour définir ce widget comme la vue principale. En plus, vous pouvez supprimer la classe de vue (NdT : View class) du projet généré mais souvenez-vous que l'instance de document et l'instance de App dépendent de la classe de vue. Dans ce cas, d'un point de vue technique, il est mieux de créer une mini application KDE et de construire votre instance de KTMainWindow vous-même.
Plus souvent, le widget est juste une partie de la zone de vue, ce qui signifie qu'il est combiné avec d'autres widgets. Ceci peut être réalisé en utilisant une des classes suivantes qui fournit une division pour séparer deux widgets.
QSplitter
KPanner
KNewPanner
Si la vue principale doit contenir plus de deux widgets, vous devez utilisez une autre instance du séparateur qui sera l'un des deux widgets gérés par le premier. Ajoutez ensuite les widgets correspondants de chaque côté et définissez le premier séparateur comme la zone de vue.
Si votre widget hérite de QDialog, il est probablement sensé changer une ou plusieurs valeurs ; ceci est souvent utilisé pour définir les préférences d'une application. Pour appeler la boîte de dialogue, vous devez ajouter un slot dans la classe App en ajoutant la déclaration de la méthode et le corps de son implantation. Ajoutez ensuite l'appel au constructeur ainsi que les appels à show() ou exec() de la boîte de dialogue. Enfin, vous devez veiller à traiter les résultats de la boîte de dialogue ; soit la boîte de dialogue modifie elle-même directement les valeurs du widget parent, soit elle retrouve les valeurs de la boîte de dialogue (ce qui devrait rendre votre boîte de dialogue beaucoup plus réutilisable dans d'autres projets). Pensez à appeler delete si vous aviez créé l'instance de la boîte de dialogue avec new pour éviter les fuites de mémoire.
Enfin, vous devez connecter une entrée de menu (avec l'aide correspondante dans la barre d'état) au nouveau slot qui appelle la boîte de dialogue ; facultativement, un raccourci clavier et une icône de barre d'outils . Pour cela, ajoutez un identificateur de ressource au fichier resource.h avec un define. Ajoutez ensuite une entrée de menu correspondante à l'un des menus popups déjà présents dans la barre de menus ou créez un nouveau popup pour ajouter l'entrée de menu. Une entrée de menu est constituée de :
un pixmap d'icône optionnel. Utilisez la macro Icon("iconname.xpm") de KApplication pour obtenir une instance de l'icône fournie par KIconLoader& ;;
le nom de l'entrée de menu. Ajoutez la avec la macro i18n("&&;entryname") de KApplication pour permettre l'internationalisation. Le symbole "&" doit être devant la lettre qui apparaîtra soulignée pour y accéder directement avec le clavier& ;;
l'instance du membre à appeler. Normalement, ce devrait être le pointeur this.
le slot du membre à appeler. Utilisez SLOT(yourmethod() pour appeler le slot lors de l'émission du signal activated().
la touche de raccourci clavier. Elle devrait être définie à zéro car ceci est fait avec une entrée dans initKeyAccel() où vous devez introduire une touche de raccourci clavier en même temps que le slot à appeler. Appelez ensuite changeMenuAccel() pour changer le raccourci clavier de l'élément de menu. Cela sera alors configurable via la boîte de dialogue de configuration des raccourcis clavier. Pour des actions standards, utilisez les valeurs énumérées données par KAccel.
l'identificateur de menu défini dans resource.h