Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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,

SANTANNA a écrit:

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.


SANTANNA a écrit:

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.

SANTANNA a écrit:

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

SANTANNA a écrit:

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).


SANTANNA a écrit:

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

 

Pied de page des forums

Powered by FluxBB