Ho creato un plug-in per alimentare un database Spatialite con una maschera di input. Esistono due campi che rappresentano la dimensione min / max di un oggetto.
Nel momento in cui chiamo lo strumento Misura ( iface.actionMeasure().trigger()
) con i due pulsanti "misura", faccio clic sulla dimensione e digito il valore con la mia tastiera nei campi (QLineEdit).
Esiste la possibilità che dopo aver fatto clic con il pulsante destro del mouse (Termina misurazione) con lo strumento Misura il valore verrà automaticamente assegnato al campo (min o max, QLineEdit)?
- Call Measure Tool (funziona)
- Clic sinistro: inizia la misurazione
- e 4. subito: fare clic con il pulsante destro del mouse e trasferire il valore totale dello strumento Misura nel campo min (QLineEdit).
AGGIORNAMENTO 1:
Un giorno dopo aver fatto questa domanda ho avuto l'idea di avere un livello di linestring che potrei usare come strumento di misura (ST_Length (geom)). Il vantaggio è che potresti avere il pieno controllo della manipolazione e dell'ottenimento dei dati da esso. Uno svantaggio è un livello aggiuntivo nel progetto.
Un flusso di lavoro potrebbe essere:
misura del clic: attiva / disattiva la modifica, attiva "Aggiungi funzione"
Crea un linestring che rappresenti la dimensione minima di un oggetto
Conferma le modifiche, calcola la lunghezza della stringa lineare (ST_Length (geom)), invia la lunghezza a QLineEdit
Chiudi la finestra di dialogo e rimuovi la stringa di linea (ELIMINA DA)
Ma la mia vera domanda rimane. C'è un modo per ottenere direttamente il valore della distanza dallo strumento di misura?
Aggiornamento 2:
Con l'aiuto di Jakob posso aggiornare il mio QLineEdit con il valore totale dello strumento di misura fino a quando non chiudo lo strumento di misura. Quindi il valore è impostato su '0.000 m'. Ho risolto questo problema usando questo:
def text_changed(str_measure):
if str_measure == '0,000 m':
pass
else:
self.min.setText(str_measure)
Funziona, ma non so se questa sia una soluzione adeguata.