我有两个不同的 QTreeView,分别称为 treeViewA 和 treeViewB。每个都有自己的 QStandardItemModel:当我单击 treeViewA 的一个元素时,我将信号与自定义插槽连接起来。我想在treeViewB的模型中引用同一个QStandardItem及其所有子项,但是我变成了错误QStandardItem::insertRows: Ignoring duplicate insert of item 0x..为什么?一般的想法是两个在 treeViewA 中有一棵树,它只显示标题,当用户单击一个标题时,在 treeViewB 中显示其所有属性(QStandardItem 层次结构中标题的子级),以便当用户修改属性(文本() 在 QStandardItem 中)更改也存储在模型 A 中。真的非常感谢您的回答!!!
MainClass::MainClass(){
modelA = new QStandardItemModel(); // Class QStandardItem*
modelB = new QStandardItemModel();
// Append a subclass of QStandardItem
modelA->invisibleRootItem()->appendRow((QStandardItem *)item);
//...
ui.treeViewA->setModel(modelA);
ui.treeViewA->setDragEnabled(true);
ui.treeViewA->show();
ui.treeViewB->setModel(modelB);
ui.treeViewB->setDragEnabled(false);
ui.treeViewB->show();
QObject::connect(ui.treeViewA, SIGNAL(clicked(const QModelIndex&)), this, SLOT(UpdateProperties(const QModelIndex&)));
}
void MainClass::UpdateProperties(const QModelIndex& index){
QStandardItem* item = planModel->itemFromIndex(index);
propertiesModel->invisibleRootItem()->appendRow(item); // At this point takes the duplication place although modelB is empty.
}