3

これが私のqt connectステートメントのサンプルです

connect(pHttpFetch, SIGNAL(Fetched(QByteArray)), this, SLOT(PrintData(QByteArray)));

ここで、最初のオブジェクトの信号は、呼び出し側 (接続呼び出しを行う) オブジェクトのスロットに接続されます。

私は次のものを持っています

  • 最初のオブジェクトはローカル オブジェクトです。コントロールが範囲外になると、オブジェクトは強制終了されます。
  • 呼び出し元のオブジェクトは、アプリケーション メモリ全体でメモリ内に留まります。

最初のオブジェクトは必要ないので、ローカル オブジェクトにしてもよろしいですか? (Qtは魔法のようにオブジェクトをメモリに保持していると思います)

オブジェクトを保持する共有ポインターを作成する必要があります。不要なときにオブジェクトを破棄しますか?

4

1 に答える 1

4

Qtのドキュメントによると

オブジェクトとの間のすべてのシグナルは自動的に切断され、オブジェクトの保留中のポストされたイベントはイベント キューから削除されます。

いいえ、Qt は「魔法のように」オブジェクトをメモリに保持しません。

もう存在しないオブジェクトはシグナルを送信できません。このオブジェクトにメモリを割り当て、それへの参照を保持する必要があります。親を指定した場合QObject、この親は子の削除を自動的に処理することに注意してください (ただし、親を指定しない場合は、手動で削除するか、のdeleteLater()スロットを使用する必要がありますQObject) 。

于 2013-06-07T10:06:03.923 に答える