}
bool TreeModel::removeRow(int row, const QModelIndex &parent) {
+ if(row > rowCount(parent))
+ return false;
+
beginRemoveRows(parent, row, row);
TreeItem *item = static_cast<TreeItem*>(parent.internalPointer());
item->removeChild(row);
return true;
}
+bool TreeModel::removeRows(int row, int count, const QModelIndex &parent) {
+ // check if there is work to be done
+ if(count == 0)
+ return true;
+
+ // out of range check
+ if(row + count - 1 > rowCount(parent) || row < 0 || count < 0)
+ return false;
+
+ beginRemoveRows(parent, row, row + count - 1);
+ TreeItem *item = static_cast<TreeItem*>(parent.internalPointer());
+ for(int i = row + count - 1; i >= 0; i--) {
+ item->removeChild(i);
+ }
+ endRemoveRows();
+ return true;
+}
+
+void TreeModel::clear() {
+ removeRows(0, rowCount(), QModelIndex());
+}