我有两个不同的QTreeView,名为treeViewA和treeViewB。每个都有自己的QStandardItemModel:当我单击treeViewA的一个元素时,我将信号与自定义插槽连接。我想在treeViewB的模型中引用与其所有子节点相同的QStandardItem,但是我变成了错误 QStandardItem :: insertRows:忽略项目0x的重复插入。为什么? 一般的想法是两个在treeViewA中有一个树只显示标题,当用户单击一个标题时,在treeViewB中显示其所有属性(QStandardItem层次结构中标题的子项),以便在用户修改属性时(文本) ()在QStandardItem中)更改也存储在modelA中。 非常感谢你的回答!
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.
}