サイドの1つが削除されたときに、Qtはオブジェクト間の接続を自動的に削除しますか?
たとえばconnect (A .. , B ..)
、A (ポインター) が削除された場合、または B が削除された場合、接続は切断されますか?
デストラクタで明示的に disconnect を使用する必要がありますか?
サイドの1つが削除されたときに、Qtはオブジェクト間の接続を自動的に削除しますか?
たとえばconnect (A .. , B ..)
、A (ポインター) が削除された場合、または B が削除された場合、接続は切断されますか?
デストラクタで明示的に disconnect を使用する必要がありますか?
はい、QObject::~QObject
デストラクタがそれを処理します。
オブジェクトとの間のすべてのシグナルは自動的に切断され、オブジェクトの保留中のポストされたイベントはイベント キューから削除されます。
ただし、多くの場合deleteLater()
、QObject サブクラスを直接削除するよりも安全に使用できます。
ただし、注意してください:
警告:保留中のイベントが配信されるのを待っている間に QObject を削除すると、クラッシュする可能性があります。QObject が現在実行中のスレッドとは異なるスレッドに存在する場合は、QObject を直接削除しないでください。代わりに deleteLater() を使用してください。これにより、保留中のすべてのイベントがオブジェクトに配信された後で、イベント ループによってオブジェクトが削除されます。