如何将QStandardItem附加到两行中

时间:2014-07-07 13:24:20

标签: c++ qt qtreeview qstandarditemmodel qstandarditem

我想要的是:

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

以下是代码:

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);

运行时,我看到newItem附加在item1上没有任何问题。但是,在第二个(item2)上,newItem被追加但作为空白项。

它出了什么问题?

修改 这是我的意思的打印屏幕。 newItems出现在第一行(QStandardItem),但在第二行显示为空白。

enter image description here

1 个答案:

答案 0 :(得分:2)

当您将项目追加到第一行时,它会获得父项,您无法将其添加到另一行。您应该附上该项目的副本:

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

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