ノードを挿入するには、次のものがあります。
layoutAboutToBeChanged();
beginInsertRows(createIndex(p_parent->row(), 0, p_parent), start, end);
TreeNode* p_node = new TreeNode(p_parent, p_data);
p_parent->appendChild(start, p_node);
endInsertRows();
layoutChanged();
行を削除するには:
layoutAboutToBeChanged();
beginRemoveRows(createIndex(p_parent->row(), 0, p_parent), row, row);
p_parent->removeChildren(row, row+1, this);
endRemoveRows();
layoutChanged();
がremoveChildren
呼び出されると、削除されるノードごとに次の処理が行われます。
changePersistentIndex(createIndex(p_node->row(), 0, p_node), QModelIndex());
delete p_node;
できます。ノードを追加したり、ノードを削除したりできます。
用語 注: 私は と を同じ意味で使用nodes
してrows
います。混乱して申し訳ありません。
機能しないもの:
- 選択したノードの前に新しい行が挿入された場合。新しく挿入されたノードが選択されます。[これは私が望むものではありません。]
- 行が選択され、後で削除された場合、即時のコア ダンプ。
- 削除された行にマウス カーソルを合わせると、すぐにコア ダンプが実行されます。
削除しないとp_node
。すべてが正常に動作します。しかし、明らかにそれはメモリリークを引き起こします。私は何を間違っていますか?
参考までに、64 ビット Linux で QT 5.0.2 を使用しています。