最佳方式,我有兩個類節點和NodeContainer:自我刪除的QObject
class Node: public QObject
{
NodeContainer* parent;
}
class NodeContainer : QObject
{
bool deleteChild(Node*child)
{
if(childNodes->remove(child))
{
deleteLater(child);
}
}
QList<Node*> childNodes;
}
一個節點可以有一個父與否。 什麼是實現Node類的破壞更好的辦法:
1)訪問父,並從那裏
destroy()
{
if(parent !=0)
{
parent.deleteChild(this);
}
else
{
deleteLater(this);
}
}
2毀滅自己)發出信號,讓家長消滅它後
destroy()
{
if(parent !=0)
{
//Once the parent receives it, the parent will delete the child.
emit parentYouHaveToDeleteChild(this);
}
else
{
deleteLater(this);
}
}
如果子節點通過'deleteLater'銷燬,父節點就會掛鉤其子節點的'destroy'信號並設置指針。那麼不需要檢查父母。此外,你的計劃看起來很奇怪。你確定這就是你想要的嗎? – pmr 2012-03-01 19:28:37
我正在做一個小文本編輯器(帶標籤)。如果標籤被認定爲必須銷燬,則需要詢問包含標籤的標籤以將其刪除。作爲例子( Bla bla more bla bla )。如果決定刪除,它必須要求tag1將其從子女名單中刪除。 –
Anton
2012-03-01 19:32:49
您確定不想使用['QDomDocument'](http://qt-project.org/doc/qt-4.8/qdomdocument.html)而不是編寫自己的數據結構嗎? – alexisdm 2012-03-03 03:07:10