В ранних версиях Qt 5 мне приходилось отключать лямбды от сигналов, как показано здесь: «Отключение лямбда-функций в Qt5».
Вот Я нашел следующее утверждение:
Нет автоматического отключения, когда «получатель» уничтожен, потому что это функтор без QObject. Однако начиная с версии 5.2 существует перегрузка, которая добавляет «объект контекста». Когда этот объект уничтожается, соединение разрывается (контекст также используется для сходства потока: лямбда будет вызываться в потоке цикла событий объекта, используемого в качестве контекста).
Qt автоматически удаляет все соединения с или с объектом, когда он уничтожается через QObject :: ~ QObject (). Таким образом, если вы создаете соединение с лямбдой, когда отправляющий объект удаляется, соединение автоматически очищается. Вы не отключили и ранее не нуждались в этом самостоятельно.
Объект контекста, на который вы ссылаетесь, используется, когда вам требуется более детальный контроль над временем жизни соединения. Это используется, когда вы хотите, чтобы соединение было удалено, когда другой объект уничтожен (объект контекста). Это облегчает удаление соединения, если это необходимо сделать до уничтожения отправителя.
В итоге: Вам не нужно вручную отключать лямбды, они очищаются автоматически. Вы можете использовать объекты контекста, чтобы удалить соединение до того, как объект отправителя будет уничтожен.
Других решений пока нет …