タイトルの通りですが、意外と書いていないので。
QObject (の派生クラス)のインスタンス obj1 を解放するとして、 delete の直前に obj1 に connect されたシグナル・スロットをわざわざ disconnect する必要はありません。
disconnect(obj1, シグナル, 別のオブジェクト, スロット);
disconnect(別のオブジェクト, シグナル, obj1, スロット);
// ↑ これを呼ぶ必要は無い!!!
delete obj1;
obj1 のコネクションはすべて QObject のデストラクタの中で解除されるからです。
QObject::~QObject()
All signals to and from the object are automatically disconnected, and any pending posted events for the object are removed from the event queue.
常識的に考えて、delete する前にユーザーがすべてのコネクションを調べて、それを明示的に解除する必要があるなんてバカな設計になっているはずがない(そもそも Qt はマルチスレッドを前提にしているので、競合を起こさずにそんなことをすることは不可能)のですが、初心者の方にはどうしてもそういう事をやってしまう人がいるようです。
やってもほとんどの場合※害はありませんが、何事も理屈を理解した上でプログラミングしましょう。
こういうコードを書く人は、Qt のシグナル・スロットの仕組みやマルチスレッドプログラミングの基本を十分理解せずにコーディングしている可能性が高いので、指導する立場にある方は十分注意してレビューしてください。
※害がある時とはどんな時でしょうか。考えてみましょう。