通常Qtでdelete
の代わりにdeleteLater()
を使用することをお勧めします。しかし、それはオブジェクトをぶら下げてしまうという問題を引き起こします。削除対象としてマークされていますが、Qt APIが返す子リストにはまだ表示されています。 (この動作は非常に直観的ではないので、私の急速に発展しているQt quirks senseは私にそれを検証させました。)それで、そのようなオブジェクトを追跡する慣用方法はありますか?私は、もちろん、後で削除する予定のオブジェクトを追跡するには?
class DeleteLaterable
{
public:
void markForDeletion() { mMarked = true; }
bool isMarked() const { return mMarked; }
private:
bool mMarked = false;
};
のようなアドホック・ソリューションを使用して、公にそれからすべてを継承するが、それは仮想継承ワームの全体の異なる缶を開くことができます。どんな良いアイデアですか?
子を削除し、次に 'deleteLater()'を削除します。 – dtech
オブジェクトの削除のスケジューリングでsetParent(nullptr)を呼び出すだけで動作しますか? –
ありがとう、みんな。手で関連するリストからそれを選ぶことになります。 – sigil