2010-10-07 13 views
9

Come posso collegare un segnale di richiamata per qualsiasi tipo di modifica nel buffer di GtkEntry, incluso il carattere aggiunto, cancellato, incollato o tagliato? Ho cercato nei documenti di GtkWidget, GtkEntry e GtkEntryBuffer senza trovarlo.Segnale di cambio testo Gtk

Nota: se la mia domanda è stata mal formulata, pensa di evento del HTML DOM change, tranne che è sparato avidamente dopo ogni singolo tasto o un evento che provoca un cambiamento, e non solo controllato su unfocus.

risposta

21

C'è il segnale changed (dell'interfaccia GtkEditable):

L':: segnale modificato viene emesso al termine di una singola operazione visibile all'utente sui contenuti del widget GtkEntry.

Ad esempio, un'operazione di incolla che sostituisce il contenuto della selezione causerà solo una emissione di segnale (anche se viene implementata eliminando prima la selezione, quindi inserendo il nuovo contenuto e potrebbe causare più :: notify :: text segnali da emettere).

(ho scoperto che controllando la sezione implemented interfaces.)

Questo indica che è possibile anche collegarsi al segnale di notify del text property (in particolare, notify::text).

C'è anche il segnale preedit-changed:

Se è utilizzato un metodo di input, il testo digitato non sarà immediatamente essere impegnata al buffer. Quindi se sei interessato al testo, collegati a questo segnale.

+0

Aaah, quindi è da 'GtkEditable'. Grazie! –

+0

@Delan Azabani - nessuna preoccupazione ... Ho aggiunto anche una nota sul segnale 'notify :: text'. – detly