Comment remplir automatiquement les champs instantanément?

11

Je cherche à créer une table d'attributs où le premier champ est un menu déroulant (j'ai atteint cet objectif en utilisant le widget d'édition 'value map'), mais j'ai du mal à trouver une méthode pour la partie suivante;

Une fois la valeur sélectionnée dans le menu déroulant, je souhaite que la cellule adjacente (dans le champ suivant) soit automatiquement remplie en fonction de la valeur du menu déroulant. Ainsi, par exemple; si valeur déroulante = A, alors champ adjacent = 1. Ou si valeur déroulante = B, alors valeur champ adjacent = 3, etc.

Je me rends compte qu'en utilisant la calculatrice de champs, il est possible de remplir automatiquement les champs dans le cadre d'un processus séparé, mais je voudrais que les champs soient remplis en même temps que la valeur déroulante est sélectionnée si possible.

J'utilise Windows 7 et QGIS version 1.8.

Merci beaucoup.

ffinnm
la source

Réponses:

9

Vous aurez besoin d'un peu de python pour ce faire.

Vous pouvez lire ce très bel article de blog ici

Créez un script similaire au suivant appelé FillForm.py et placez-le à côté de votre projet

from PyQt4.QtCore import *
from PyQt4.QtGui import *

aField = None
bField = None

def formOpen(dialog,layerid,featureid):
    global aField
    aField = dialog.findChild(QComboBox,"fieldA")
    global bField
    bField = dialog.findChild(QLineEdit,"fieldB")
    aField.currentIndexChanged.connect( aChanged )

def aChanged( value ):
    if ( aField.currentText() == 'A' )
        bField.setText( '1' )
    elif ( aField.currentText() == 'B' )
        bField.setText( '2' )

Accédez à Propriétés de la couche vectorielle => Général et entrez FormFill.formOpen dans la ligne de fonction d'initialisation .

Matthias Kuhn
la source
Est-il possible de le faire dans qgis 2.10? Y a-t-il de nombreuses différences de 1,8?
Diogo Caribé
oui c'est toujours possible
Ian Turton