void Model::Erase(const QModelIndex& index) { if(!index.isValid()) return; odb::sqlite::database db(DatabaseFilename.toStdString(), SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE); odb::core::transaction t (db.begin ()); TreeItem *item = static_cast<TreeItem*>(index.internalPointer()); TreeItem* parent=item->Parent; item->Erase(db); parent->Children.removeOne(item); db.update(*parent); t.commit(); delete item; }