How can i set QStandardItem in the row which have parents?



  • How can i set QStandardItem in the row which have parents?
    For example:
    !http://s1.hostingkartinok.com/uploads/images/2012/03/9aa311e5847fead3170fdb75eb69eec1.png(1)!

    I need set item here, but there is no functions which would allow to do it.
    There is to functions to set item:
    setItem ( int row, int column, QStandardItem * item )
    setItem ( int row, QStandardItem * item )
    But they dont have parent argument



  • I don't understand your problem.
    If you want to set a tree with 3 levels , you just have to do :

    @QStandardItemModel *model = new QStandardItemModel;
    QStandardItem * level0 = new QStandardItem("level 0");
    QStandardItem * level1 = new QStandardItem("level 1");
    QStandardItem * level2 = new QStandardItem("level 2");

    level1->appendRow(level2);
    level0->appendRow(level1);

    model->appendRow(level0);@

    And , then because everything are pointers, you can set items directly



  • Otherwise, maybe you want to set items by clicking on it .

    From the view ( treeview, listview...) get the the index by using the signals :
    @void clicked ( const QModelIndex & index )@

    Then, get the standardItem from the index and change it as you want !
    @QStandardItem * itemFromIndex ( const QModelIndex & index ) const@



  • If I understand correctly, there is no analog of QStandardItemModel::setItem() (which applies for tables) in the context of a tree structure. If I want to fully change an item at a given position in my tree, first I have to cut the branch beneath the parent (removeRow()) and second, graft there the new item (insertRow()). Am I wrong?

    Second thought: please forget, forgive or delete this post, the answers above are clear.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.