55

サイドの1つが削除されたときに、Qtはオブジェクト間の接続を自動的に削除しますか?

たとえばconnect (A .. , B ..)、A (ポインター) が削除された場合、または B が削除された場合、接続は切断されますか?

デストラクタで明示的に disconnect を使用する必要がありますか?

4

1 に答える 1

53

はい、QObject::~QObjectデストラクタがそれを処理します。

オブジェクトとの間のすべてのシグナルは自動的に切断され、オブジェクトの保留中のポストされたイベントはイベント キューから削除されます。
ただし、多くの場合deleteLater()、QObject サブクラスを直接削除するよりも安全に使用できます。

ただし、注意してください:

警告:保留中のイベントが配信されるのを待っている間に QObject を削除すると、クラッシュする可能性があります。QObject が現在実行中のスレッドとは異なるスレッドに存在する場合は、QObject を直接削除しないでください。代わりに deleteLater() を使用してください。これにより、保留中のすべてのイベントがオブジェクトに配信された後で、イベント ループによってオブジェクトが削除されます。

于 2012-05-13T10:02:33.753 に答える