Cool, Thanks for all the insite: I have solved the problem with a little more testing.
For the sake of completeness and for others Ive included my code:
void DialogStructureXML::on_btn_add_toroot_released()
{
QModelIndex currentIndex = ui->tree->selectionModel()->currentIndex();
QModelIndex rootIndex = ui->tree->rootIndex();
QModelIndex traceIndex = currentIndex;
QModelIndex child = currentIndex;
tree_model *model = (tree_model*) ui->tree->model();
int rowCount = model->rowCount();
int currentRow = 0;
int prevRow = 0;
//some string cleanup
QString ItemText = ui->edit_textvaluefortree->text() ;
ItemText.simplified();
//If its a valid index (ie: valid something in the GUI tree) trace back to the parent
if ( traceIndex.isValid() ) {
while ( traceIndex.isValid() ) {
currentRow = traceIndex.row()+1;
traceIndex = model->parent(traceIndex);
}
}
if (!model->insertRow(currentRow, rootIndex)) return;
child = model->index(currentRow, 0, rootIndex); //Column index 0
model->setData(child, QVariant( ItemText ), Qt::EditRole);
return;
}