Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
[SOLVED] QTreeView - getting the current item via the model index
My task is to create an XML editor. I have inherited from QStandardItem and QTreeView -> I have myStandardItems in myTreeView.
Now I want to insert a new row. m_model->itemFromIndex() gives me a QStandardItem which I cast to a myStandardItems to get at the additional info I need to determine if I can do this action (I can only add a new row under a specific type of parent so myStandardItem has a m_type enum). This is not working because all I am getting back is the QStandardItem data, m_type and my other info have been lost - I know I have the correct item because the text is correct when I am stepping through the code.
I tried this same principle with QTreeWidget and QTreeWidgetItem (i.e. use derived classes then cast the result of myTreeView::currentItem() to a myTreeWidgetItem) and m_type is available to me with the correct value. Unfortunately, QTreeWidget is not what I need for the specialised 'drag and drop' and only having one editable column functionality.
Any pointers on how to get my derived item out of the model please?
giesbert last edited by
It is difficult to answer this. First of all, a look to more code could heölp. How do you store the items in the model? How is your model build?
AlekseyOk last edited by
You can try to store additional info in user's data field (i.e. "QStandartItem::data(...)":http://qt-project.org/doc/qt-4.8/qstandarditem.html#data).
Thanks guys - it was a typo, doh!
On a side note - how do I promote this to solved????
Sam last edited by
[quote author="Dolphin" date="1352885041"]
On a side note - how do I promote this to solved????[/quote]
You can edit your first post and preprend "Solved" to the title.
Very high tech!
Sam last edited by
Unfortunately there is no other way to mark a thread as "Solved", However suggestions have been made and it may reflect soon . You can check for the updates and test on "QnA Testing Area":http://qt-project.org/forums/viewforum/46/
Just thought I was missing a button or menu option :-)
PS I have a simplified version of my code below which gives me 4 top level rows each containing 4 rows. The problem is how to delete the inner rows? Nothing I have tried will remove an "AA" row and some of the options will not remove any "One" rows either. It seems like this should be obvious but no joy!
@ for(int row(0); row < 4; row++)
QStandardItem* parent = new QStandardItem("One");
for(int row2(0); row2 < 4; row2++)
QStandardItem* item = new QStandardItem("AA");
@ QModelIndex index = m_view->currentIndex();
CMenuTreeRow *current = (CMenuTreeRow *) m_model->itemFromIndex(index);
int currentRow = current->row();
CMenuTreeRow *parent = (CMenuTreeRow *) current->parent();
if(parent)//we are at top of tree - do not delete!
QModelIndex parentIndex = parent->index();