2013-12-14 20 views
6

Ho bisogno di collegare il segnale valueChanged da QLineEdit a uno slot personalizzato programmaticamente. So come fare la connessione usando Qt Designer e facendo la connessione con l'interfaccia grafica, ma mi piacerebbe farlo a livello di programmazione in modo da poter imparare di più sui segnali e le slot.Come collegare il valore del segnaleChanged da QLineEdit a uno slot personalizzato in Qt

Questo è quello che ho che non funziona.

file cpp

// constructor 
connect(myLineEdit, SIGNAL(valueChanged(static QString)), this, SLOT(customSlot())); 

void MainWindow::customSlot() 
{ 
    qDebug()<< "Calling Slot"; 
} 

file h

private slots: 
    void customSlot(); 

Che cosa mi manca qui?

Grazie

risposta

15

QLineEdit non sembrano avere valueChanged segnale, ma textChanged (fare riferimento alla documentazione Qt per la lista completa dei segnali supportati). È necessario modificare anche la chiamata alla funzione connect(). Dovrebbe essere:

connect(myLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(customSlot())); 

Se avete bisogno di gestire il nuovo valore di testo nello slot, è possibile definire come customSlot(const QString &newValue) invece, in modo che il collegamento sarà simile:

connect(myLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(customSlot(const QString &))); 
+0

Modificato valueChanged per TextChanged e QString statico per const QString e lavorato. Non so come mi sia mancato, specialmente QString statico (wow), grazie mille. Anche grazie mille per il secondo esempio poiché mi chiedevo anche l'utilizzo del parametro. Molte grazie –