jeudi 24 juin 2010

Des formulaires personnalisés pour QGIS

L’interface graphique (GUI en Anglais) de QGIS est développée grâce à la technologie QT. Pour rappel, QT est un SDK multi-plateforme qui permet la création d’interfaces graphiques riches. QGIS a la particularité de permettre l’utilisation de formulaires externes pour saisir les données attributaires, lors de la digitalisation par exemple. Nous allons voir à travers ce tutoriel comment construire nos propres formulaires grâce à QT-Creator, l’outil de design d’interface du SDK QT.
Commencez par télécharger la dernière version de QT pour Windows à cette adresse (QT est gratuit pour une utilisation non commerciale) :


Une fois le logiciel installé, lancez le et créez un nouveau projet.
Dans la fenêtre qui s’ouvre, choisissez « Interface graphique QT designer »


Laissez les options choisies par défaut dans les deux fenêtres suivantes. Donnez un nom à votre fichier et spécifiez le chemin d’accès où vous voulez l’enregistrer.
L’éditeur QT Creator s’ouvre avec votre formulaire vierge, à part deux boutons positionnés par défaut, « OK » et  « Annuler »


Faites glissez le contrôle « Label » sur votre formulaire pour ajouter un texte, ici, le titre du formulaire : « Gestion des arbres » 


Vous pouvez changer le style du texte dans la propriété "Font".


Choisissez ensuite le contrôle « LineEdit » et ajoutez le au formulaire, copiez-collez le quatre fois. Nous disposons ainsi de quatre champs texte. 
Sélectionnez les champs texte les uns après les autres pour modifier leur nom dans les propriétés. (Le nom des contrôles doit correspondre au nom des champs de la couche pour laquelle nous souhaitons utiliser le formulaire)


Pour ma part, j’ai choisi « id », « type », « age » et « etat ».
Vous pouvez ensuite ajouter des « Label » avec leur nom devant les champs.  
Si vous voulez aligner parfaitement vos contrôles, sélectionnez les par groupe et cliquez sur l’icône « Aligner verticalement » sur la barre d’outil au dessus du formulaire.


Pour afficher une image sur le formulaire, nous allons aussi utiliser le contrôle « Label » dont nous modifierons la propriété « pixmap », afin de choisir notre image. Cochez aussi la propriété « scaledContents » pour nous permettre de redimensionner l’image à notre goût.



Notre formulaire est terminé, il ne nous reste plus qu’à l’enregistrer. La suite se passe sous QGIS.
Lancez QGIS et créez une nouvelle couche vecteur de type point. Ajoutez les quatre champs en prenant soin de faire correspondre leur nom avec ceux des contrôles crées sous QT (« id », « type », « age » et « etat »).


Une fois la couche créée, double-cliquez sur celle ci afin d’en afficher les propriétés. Dans l’onglet "Général" , cliquez sur le bouton « ... » de l’option "Editer UI" et sélectionnez votre fichier de formulaire fraichement crée. Validez les modifications des propriétés de votre couche etcliquez sur OK.


Lancez la digitalisation et saisissez un point. Comme par magie notre formulaire apparait ! Saisissez les données et validez. 


Les données sont enregistrées dans la table attributaire. Pour vérifier la saisie, clic droit sur la couche, « Ouvrir la table d'attributs ». 


Voilà ! J’espère que ce tutoriel vous sera utile. Et rien ne vous empêche de créer des formulaires beaucoup plus riches en y intégrant par exemple des contrôles de type combobox, list, checkbox, etc…

N'hésitez pas à me contacter si vous avez des questions.
Adrien

9 commentaires:

Fred F4EED a dit…

Bonjour,

déjà bravo pour votre site et pour votre article.

J'ai suivit votre exemple en voulant remplacer les Line Edit par des combo box. Mais visiblement ça ne fonctionne pas.

Quant j'appel la boite de dialogue QT depuis QGIS 1.4.0 je n'accède plus a mes Combo Box ...

Avez vous une idée ??

Par avance merci

Frédéric

Joris a dit…

Ah, Qt et les joies du C++... :)

Sylvain POULAIN a dit…

Très intéressant, merci pour cet article

Anonyme a dit…

Bonjour,
Merci pour ce petit tuto qui devrait faciliter la vie d'un grand nombre de novices comme moi. Ce serait sympa de détailler la conception de formulaires plus élaborés...avec des menus déroulants par exemple.

Anonyme a dit…

Super! Merci pour votre article.
ViB

Anonyme a dit…

Bonjour,
Mon formulaire personnalisé avec Qt ne s'ouvre pas lors de la visualisation des attributs d'un polygone dans la couche .shp.
C'est toujours le "form" par défaut qui s'ouvre. J'ai pourtant bien précisé dans l'onglet général le chemin de mon nouveau formulaire .ui.

Merci pour votre réponse.

Anonyme a dit…

Bonjour,
Quelle version de QT Creator avez-vous? en effet, j'ai téléchargé la 2.7.1 mais je n'arrive même pas à avoir l'option "Interface graphique QT designer" ! merci d'avance

Unknown a dit…
Ce commentaire a été supprimé par l'auteur.
Anonyme a dit…

Bonjour,
Merci de l'article. C'est tres utile. J'ai fait aussi un formulaire liee a une couche spatialite, mais j'ai besoin de integrer quelque un sousformulaire pour integrer les elements lies a ma couche principale (relation 1:N).
Est-ce que c'est possible, si oui, comment@