2014-07-07 2 views
0

Ce que je veux avoir est:comment ajouter un QStandardItem en deux rangées

Root ------ item1 
    |   --- newItem 
    |_____ item 2 
    |   --- newItem 
    |_____ item 3 

Voici le code:

QStandardItem *item1 = new QStandardItem(QString("item1")); 
QStandardItem *item2 = new QStandardItem(QString("item2")); 
QStandardItem *item3 = new QStandardItem(QString("item3")); 

QStandardItem *rootNode = standardModel->invisibleRootItem(); 

rootNode->appendRow(item1); 
rootNode->appendRow(item2); 
rootNode->appendRow(item3); 

QStandardItem *newItem = new QStandardItem(QString("newItem")); 

item1->appendRow(newItem); 
item2->appendRow(newItem); 

lorsqu'il est exécuté, je vois le newItem est ajouté sur Item1 sans aucun probléme. Cependant, sur le second (item2), le newItem est ajouté mais en tant qu'élément vide.

Quel est le problème avec elle?

EDIT: Voici un écran d'impression de ce que je voulais dire. newItems apparaissent sur la première ligne (QStandardItem), mais vides sur la deuxième ligne.

enter image description here

Répondre

2

Lorsque vous ajoutez l'élément à la première ligne, il obtient un parent et vous ne pouvez pas l'ajouter à une autre ligne. Vous devez ajouter une copie de l'article:

QStandardItem *newItem = new QStandardItem(QString("newItem")); 

item1->appendRow(newItem); 
item2->appendRow(newItem->clone());