#1 Mon 15 March 2021 09:07
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
QGIS 3.16: Parcourir les formulaires ouverts
Bonjour,
J'ai commencé à développer un plugin permettant de créer un point dans une couche puis d'ouvrir le formulaire UI associé à la couche.
Le problème est que lorsque je créé un deuxième point sans fermer le premier formulaire, cela ouvre un deuxième formulaire alors que j'aimerai qu'il utilise celui déjà ouvert. Mon idée est de parcourir les formulaires ouverts et de récupérer celui qui m'intéresse pour le réutiliser mais je n'arrive pas à trouver comment parcourir les formulaires (ou fenêtres) ouverts.
Y a t-il un moyen de parcourir tous les formulaires ouverts dans QGis ?
Cordialement, Nicolas
Hors ligne
#2 Mon 15 March 2021 11:03
- michel56
- Participant assidu
- Lieu: Lorient
- Date d'inscription: 14 Jul 2012
- Messages: 474
Re: QGIS 3.16: Parcourir les formulaires ouverts
Bonjour,
On peut déjà ouvrir un formulaire UI avec Qgis en ajoutant un point sans faire de plugin.
Cordialement.
Opérateur cartographique & DAO & PHP.
Hors ligne
#3 Mon 15 March 2021 11:20
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
Re: QGIS 3.16: Parcourir les formulaires ouverts
Oui on peut laisser QGis gérer le formulaire ou en faire un par glisser/déposer mais ces méthodes ne conviennent pas au formulaire que j'ai fait et qui contient une centaine d'éléments (liste déroulante, case à cocher, …). Je préfère faire le formulaire moi même pour optimiser la place de ce dernier.
Dernière modification par tnicolas (Mon 15 March 2021 11:20)
Hors ligne
#4 Mon 15 March 2021 11:33
- michel56
- Participant assidu
- Lieu: Lorient
- Date d'inscription: 14 Jul 2012
- Messages: 474
Re: QGIS 3.16: Parcourir les formulaires ouverts
Je ne comprends pas trop.
Tu peux ajouter un formulaire UI fait avec Qt Designer.
Voir la pièce jointe.
Dernière modification par michel56 (Mon 15 March 2021 11:36)
Opérateur cartographique & DAO & PHP.
Hors ligne
#5 Mon 15 March 2021 11:49
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
Re: QGIS 3.16: Parcourir les formulaires ouverts
Je comprends que ma demande puisse ne pas paraitre logique/pertinente étant donné que QGis permets déjà de le faire sans programmation. Je vais tacher de détailler un peu plus.
Le but de ce plugin est d'avoir un contrôle total sur le formulaire (si j'appuie sur ce bouton cela doit avoir telle action, si je sélectionne telle valeur dans telle liste alors cela change une autre liste et sa couleur de fond, ...). Je ne sais pas si QGis permet d'avoir une gestion aussi poussée d'un formulaire c'est pourquoi je ne suis pas passé par l'option que tu présentes.
En plus cela oblige d'ouvrir l'éditeur pour créer un point et enregistrer les données alors qu'avec ce plugin cela reste transparent quand j'utilise l'outil.
Hors ligne
#6 Mon 15 March 2021 12:28
- michel56
- Participant assidu
- Lieu: Lorient
- Date d'inscription: 14 Jul 2012
- Messages: 474
Re: QGIS 3.16: Parcourir les formulaires ouverts
Tu peux associer un script python à ton formulaire UI.
Opérateur cartographique & DAO & PHP.
Hors ligne
#7 Mon 15 March 2021 12:41
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3946
Re: QGIS 3.16: Parcourir les formulaires ouverts
Bonjour,
Le but de ce plugin est d'avoir un contrôle total sur le formulaire
Ce que veut dire michel56 est que vous n'avez peut-être pas forcément besoin d'un plugin pour charger un formulaire conçu sous Qt sur une couche. L'option indiquée permet de les associer et c'est la logique dans le formulaire Qt qui s'applique. Voir https://docs.qgis.org/3.16/fr/docs/user … m-ui-file, même si les références sont un peu vieilles.
En plus cela oblige d'ouvrir l'éditeur pour créer un point et enregistrer les données alors qu'avec ce plugin cela reste transparent quand j'utilise l'outil.
Je ne comprends pas de quel éditeur vous parlez, mais cette tâche peut devenir juste ce que fait le plugin. On se focalise sur votre "plus-value", et on s'appuie sur les fonctionnalités déjà disponibles. Mais on s'éloigne peut-être de la question initiale.
Le problème est que lorsque je créé un deuxième point sans fermer le premier formulaire, cela ouvre un deuxième formulaire alors que j'aimerai qu'il utilise celui déjà ouvert.
Si le premier formulaire, ouvert lors de la création d'une nouvelle entité, n'est pas fermé, on est bien d'accord que les modifications appliquées à cette entité ne sont pas enregistrées? Je ne suis même pas sûr que l'entité elle-même est enregistrée à ce moment-là. Auquel cas, que comptez-vous faire des attributs entrés pour le premier objet et dudit objet? Pourquoi ne pas valider, fermer, ouvrir?
Hors ligne
#8 Mon 15 March 2021 14:09
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
Re: QGIS 3.16: Parcourir les formulaires ouverts
Bonjour,
Ce que veut dire michel56 est que vous n'avez peut-être pas forcément besoin d'un plugin pour charger un formulaire conçu sous Qt sur une couche. L'option indiquée permet de les associer et c'est la logique dans le formulaire Qt qui s'applique. Voir https://docs.qgis.org/3.16/fr/docs/user … m-ui-file, même si les références sont un peu vieilles.
Je ne comprends pas de quel éditeur vous parlez, mais cette tâche peut devenir juste ce que fait le plugin. On se focalise sur votre "plus-value", et on s'appuie sur les fonctionnalités déjà disponibles. Mais on s'éloigne peut-être de la question initiale.
L'éditeur en question est l'outil "basculer en mode édition".
Oui j'avais bien compris. En fait le plugin va regrouper plusieurs outils dont celui là. Et je trouve plus simple de tout paramétrer dans des fichiers python plutôt que d'en paramétrer une partie dans QGis (valeur par défaut, actualisation de listes, ...) et l'autre dans des fichiers python à coté (gestion des couleurs, ..). Après je débute en python, il est possible que certains points m'échappent.
Si le premier formulaire, ouvert lors de la création d'une nouvelle entité, n'est pas fermé, on est bien d'accord que les modifications appliquées à cette entité ne sont pas enregistrées? Je ne suis même pas sûr que l'entité elle-même est enregistrée à ce moment-là. Auquel cas, que comptez-vous faire des attributs entrés pour le premier objet et dudit objet? Pourquoi ne pas valider, fermer, ouvrir?
Effectivement valider, fermer, ouvrir est la solution envisagée si je n'arrive pas à parcourir les formulaires ouverts. J'avais envisagé le fonctionnement suivant : ouvrir, enregistrer mais pas fermer (mais plutôt masquer si c'est possible) et utiliser le formulaire avec les données déjà renseignées pour le point suivant (cela évite de devoir tout renseigner de nouveau).
Si le parcours des formulaires n'est pas possible alors j'imagine qu'il faut : ouvrir, enregistrer, fermer, ouvrir et charger les données du précédent.
Il y aura un deuxième outil qui permettra (au clic d'un point sur la carte) d'ouvrir le formulaire et de charger les données du point. Comme pour la création, si on clique plusieurs fois sur la carte, cela ouvre autant de formulaire. La parcours des formulaires ouverts permettrai de récupérer le formulaire pour en modifier les données. Sinon j'imagine qu'il faut rendre le formulaire modal pour être certain qu'il soit bien fermé avant tout nouveau clic sur la carte mais cela "bloquerait" les autres outils de Qgis (zoom, ....).
Hors ligne
#9 Mon 15 March 2021 15:13
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3946
Re: QGIS 3.16: Parcourir les formulaires ouverts
Il me semblait qu'un formulaire était lié à l'entité pour laquelle il avait été ouvert, mais je ne suis pas développeur et ignore quelques subtilités. Il faudrait certainement voir quelles méthodes sont disponibles dans les classes que vous utilisez: https://qgis.org/pyqgis
(cela évite de devoir tout renseigner de nouveau)
Là encore, il y a une option déjà dans QGIS qui fait cela (https://docs.qgis.org/3.16/fr/docs/user … g-settings). C'est une option globale pour l'heure, s'applique à chaque couche éditable du projet mais dans la 3.20, on pourra sélectionner quels couches/champs seront concernés par ce comportement. Mais j'ai compris que le plugin doit tout commander. Au risque peut-être de mélanger la logique outils et la logique données.
Hors ligne
#10 Mon 15 March 2021 15:51
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
Re: QGIS 3.16: Parcourir les formulaires ouverts
Il me semblait qu'un formulaire était lié à l'entité pour laquelle il avait été ouvert, mais je ne suis pas développeur et ignore quelques subtilités. Il faudrait certainement voir quelles méthodes sont disponibles dans les classes que vous utilisez: https://qgis.org/pyqgis
En utilisant les outils de base de QGis oui, en développant c'est en fonction des besoins. C'est pour ça que je ne lie pas le formulaire à l'entité (avec tous les risques que cela comporte).
Là encore, il y a une option déjà dans QGIS qui fait cela
Je ne connaissais pas cette option très pratique en effet.
Hors ligne
#11 Tue 16 March 2021 12:07
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
Re: QGIS 3.16: Parcourir les formulaires ouverts
Je ne sais pas si c'est la meilleure solution mais j'ai trouvé quelque chose qui fonctionne :
Code:
for item in QApplication.allWidgets(): #Tous les widgets if item.windowTitle()[:4] == "Test": #Les widgets dont le nom commence par "Test" if item.isVisible() == True: #Les widgets visibles form_ouvert = item
Je garde les autres pistes en mémoire au cas ou.
Merci à vous.
Dernière modification par tnicolas (Tue 16 March 2021 12:08)
Hors ligne