1

我有两个不同的 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.
}
4

0 回答 0