QObject 自毁感知容器
QObject selfdestruction aware container
是否有 Qt 容器,它知道 QObject 的销毁信号并在元素被销毁时删除该元素?
即像这样:
QObject *obj1 = new MyObject();
QObject *obj2 = new MyObject();
QObjectContainer c;
c.add(obj1);
c.add(obj2);
qDebug() << c.size(); // Prints 2
delete obj1;
qDebug() << c.size(); // Prints 1
当指向的对象被删除时,QPointer 会自动清除自身
您可以通过在 container
派生的 class.
中捕获信号 destroyed()
来自己完成
P.S。没有 Qt class 这样做,AFAIK。
是否有 Qt 容器,它知道 QObject 的销毁信号并在元素被销毁时删除该元素?
即像这样:
QObject *obj1 = new MyObject();
QObject *obj2 = new MyObject();
QObjectContainer c;
c.add(obj1);
c.add(obj2);
qDebug() << c.size(); // Prints 2
delete obj1;
qDebug() << c.size(); // Prints 1
当指向的对象被删除时,QPointer 会自动清除自身
您可以通过在 container
派生的 class.
destroyed()
来自己完成
P.S。没有 Qt class 这样做,AFAIK。