是否可以斷開lambda函數?如果「是」,如何?斷開Qt5中的lambda函數
根據https://qt-project.org/wiki/New_Signal_Slot_Syntax我需要使用從QObject :: connect方法返回的QMetaObject::Connection
,但我怎樣才能將該對象傳遞給lambda函數?
僞代碼示例:
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();
}
你嘗試過嗎? (但是也可以將'conn'添加到lambda的捕獲列表中) – 2013-02-12 08:51:28
@JoachimPileborg是的,它由於某種原因發生段錯誤。只要我刪除了QMetaObject :: Connection conn,並且只保留了= segmentation消失後的代碼。 – alexandernst 2013-02-12 08:52:47
這個問題在這裏討論:http://stackoverflow.com/questions/13847507/qt5-new-signal-to-lambda-connections-memory-leak – kfunk 2013-02-12 09:33:25