在QTreeView中制作QStandardItem的副本

时间:2013-10-11 12:16:37

标签: c++ qt model-view-controller

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

0 个答案:

没有答案