2015-02-11 13 views
5

Dato il seguente due:Qt segnali slot, tipo colato in una nuova notazione

connect(ui->comboBox, SIGNAL(activated(QString)), ps, SLOT(requestPlotsAvailable(QString))); 
connect(ui->comboBox, &QComboBox::activated, ps, &PlotSystem::requestPlotsAvailable); 

Il primo utilizza la vecchia notazione, che funziona. Il secondo utilizza la nuova notazione e restituisce l'errore

error: no matching function for call to 'PlotSystemGui::connect(QComboBox*&, <unresolved overloaded function type>)' 

Come evitare l'errore utilizzando la nuova notazione?

+0

@hyde, mi dispiace, è stato un errore di battitura. –

risposta

8

Questo dovrebbe funzionare

connect(ui->comboBox, 
     static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::activated), 
     ps, 
     &PlotSystem::requestPlotsAvailable); 

Vedi this domanda su puntatori a funzioni sovraccaricate

+0

Viene restituito un altro errore: nessuna corrispondenza con la funzione di conversione 'attivata' per digitare 'void (classe QComboBox :: *) (classe QString)' –

+1

sì, perché dovrebbe essere 'const QString &' invece di' QString'. (risposta modificata) – ftynse

+0

Il problema è, come descritto nel primo messaggio, che il compilatore non può risolvere quale delle funzioni sovraccaricate deve essere eseguita. Quindi 'static_cast' doveva essere indicato esplicitamente. – ftynse

Problemi correlati