¿Hay alguna manera de combinar textChanged
y editingFinished
para QLineEdit
? El problema es que editingFinished
se emite incluso si solo muevo el cursor fuera de QLineEdit
sin ningún cambio. Mientras que quiero emitir una señal solo cuando se realizaron cambios después de que terminé de editar.PyQt4: combine textChanged y editingFinished para QLineEdit
Puedo imaginar almacenar solo en algún lugar el texto actual, comparar el texto introducido con él y hacer algo solo si es diferente. Pero me pregunto si hay alguna solución puramente basada en el manejo de señales.
EDIT: Al final tuve que almacenar el texto actual y compararlo con el nuevo texto y no seguir la solución propuesta. Me di cuenta de que en mi aplicación "1.2345" y "1.23" sería el mismo texto, pero de todos modos tengo que actualizar algunos otros valores en este caso, y así sucesivamente. Realmente aprecio la respuesta detallada y los comentarios de @Avaris y @ekhumoro, y los aceptaré, ya que parece que resuelve el problema originalmente publicado.
Su solución parece incompleta. Por ejemplo, la señal se disparará si se abre el menú contextual de la edición de línea (por lo que tal vez necesite comprobar 'event.reason()'). Además, la señal * no * disparará si se presiona return/enter, por lo que es necesario algún manejo del teclado. – ekhumoro
@ekhumoro: tienes razón sobre esos problemas. Actualizado mi respuesta. – Avaris
No está mal, pero ¿qué pasa si p. 'setText()' o 'clear()' se llama entre ediciones? – ekhumoro