QGIS Plugin: Transectizer

Transectizer es un plugin QGIS que proporciona una manera sencilla de diseñar transectos lineales con estaciones de muestreo distribuidas a una distancia determinada a lo largo del transecto.

Custom cursor showing bearing

A custom, chatty QGIS plugin cursor showing the bearing line.

Transectizer hace posible generar automáticamente los detalles de cada estación individual (nombre del transecto/campaña, nombre de la estación, número de estación) o tener control sobre todos los atributos de cada estación.

Puede almacenar los transectos en una nueva capa o en una capa existente. En el caso de que la capa no sea compatible con Transectizer hará los cambios apropiados en la capa para hacerla compatible con Transectizer. Continue reading

returnPressed en QComboBox

El problema con la señal returnPressed en QComboBox

Bueno, en esta ocasión voy a hablaros de un problema bastante común que es la imposibilidad de hacer uso de una la señal returnPressed en un QComboBox de PyQt4, los bindings en Python de las librerías Qt de Trolltech.

Una manera rápida de optimizar el trabajo en GUI’s de introducción de datos es hacer saltar el foco de la aplicación al widget que continúa el ciclo de trabajo una vez terminada la edición en el widget anterior. Por ejemplo, si tenemos varios QLineEdit, lo suyo es que el primero pase el foco al segundo, éste al tercero, y así sucesivamente. Esto lo conseguimos, en el caso de QLineEdit, conectando la señal returnPressed() al slot setFocus() del siguiente widget.

Lo ideal es que si en lugar de un QLineEdit tenemos un QComboBox, ocurra igual, es decir, que una vez entrado en éste, al seleccionar un elemento y pulsar [Enter] se pase el foco al widget siguiente. El problema con las librerías Qt4 y, por extensión, PyQt4 , es que se “olvidaron” implementar la señal returnPressed en QComboBox… o no exactamente…

Primeros pasos

Buscando por la red encontré una solución parcial. Al parecer, cuando uno crea un QComboBox editable, el propio comboBox contiene un QLineEdit del cual podemos aprovechar sus señales y conectarlas a slots, accediendo al QLineEdit mediante el método lineEdit() de QComboBox. Por ejemplo, si tuviéramos en nuestro diálogo un QComboBox llamado comboNuevo y quisiéramos conectarlo con la señal setFocus() de otro widget:

ejemplo de returnPressed en QComboBox

Este es el aspecto de un QComboBox con la señal returnPressed habilitada

Como hemos dicho, es preciso que hayamos definido comboNuevo como editable. De esta manera, contendrá un LineEdit; de no ser así, obtendremos una excepción.

La solución para usar la señal returnPressed en QComboBox

La solución es bien sencilla y se trata, simplemente, de indicar que el LineEdit de nuestro QComboBox es de sólo lectura. De esta manera podremos hacer uso de la señal returnPressed en QComboBox:

Bien sencillo y evita tener que hacer engorrosas clases personalizadas, lo que es complicado sobre todo cuando se emplea QtCreator.

¡¡¡Espero que os sirva de ayuda!!!