+void TreeModel::itemDataChanged(int column) {
+ AbstractTreeItem *item = qobject_cast<AbstractTreeItem *>(sender());
+ QModelIndex itemIndex;
+
+ if(item == rootItem)
+ itemIndex = QModelIndex();
+ else
+ itemIndex = createIndex(item->row(), column, item);
+
+ emit dataChanged(itemIndex, itemIndex);
+}
+
+void TreeModel::appendChild(AbstractTreeItem *parent, AbstractTreeItem *child) {
+ if(parent == 0 or child == 0) {
+ qWarning() << "TreeModel::apendChild(parent, child) parent and child have to be valid pointers!" << parent << child;
+ return;
+ }
+
+ int nextRow = parent->childCount();
+ beginInsertRows(indexByItem(parent), nextRow, nextRow);
+ parent->appendChild(child);
+ endInsertRows();
+
+ connect(child, SIGNAL(dataChanged(int)),
+ this, SLOT(itemDataChanged(int)));
+}
+
+