È possibile scollegare una funzione lambda? E se "si", come?Disconnessione delle funzioni lambda in Qt5
Secondo https://qt-project.org/wiki/New_Signal_Slot_Syntax Ho bisogno di usare un QMetaObject::Connection
che viene restituito dal metodo QObject :: connect, ma come posso passare tale oggetto alla funzione lambda?
pseudo-codice di esempio:
QMetaObject::Connection conn = QObject::connect(m_sock, &QLocalSocket::readyRead, [this](){
QObject::disconnect(conn); //<---- Won't work because conn isn't captured
//do some stuff with sock, like sock->readAll();
}
Hai provato? (Ma aggiungi anche 'conn' alla lista di cattura per il lambda) –
@JoachimPileborg Sì, seg segna per qualche motivo. Non appena rimuovo la connessione QMetaObject :: Connection e lascia solo il codice dopo = il segfault scompare. – alexandernst
Il problema è discusso qui: http://stackoverflow.com/questions/13847507/qt5-new-signal-to-lambda-connections-memory-leak – kfunk