Подтвердить что ты не робот

Являются ли сигналы в Qt автоматически отключенными при удалении одного из классов

Qt автоматически удаляет соединения между объектами, когда одна из сторон удаляется?

e.g connect (A .. , B ..), когда A (указатель) удаляется или B удаляется, отключится ли соединение?

Нужно ли явно отключать связь в деструкторе?

4b9b3361

Ответ 1

Да, QObject::~QObject destructor позаботится об этом:

Все сигналы от объекта и от него автоматически отключены, а любые ожидающие события для объекта удаляются из очереди событий.
Однако часто безопаснее использовать deleteLater() вместо прямого подкласса QObject.

Позаботьтесь:

Предупреждение: Удаление QObject в ожидании ожидающих событий может привести к сбою. Вы не должны удалять QObject напрямую, если он существует в другом потоке, чем тот, который выполняется в настоящий момент. Вместо этого используйте deleteLater(), из-за чего цикл цикла будет удалять объект после отправки всех ожидающих событий.