制作QTreeWidget编辑//故障排除的只有一列

问题描述:

记住,这个问题不是问题Making only one column of a QTreeWidgetItem editable的副本,因为它提出的解决方案是行不通的。制作QTreeWidget编辑//故障排除的只有一列

你好,所以我只想让我的treeWidget只有一列可编辑。

  propertyItems.push_back(new QTreeWidgetItem); //gets filled by the while-loop 
      propertyItems[propertyItems.size()-1]->setText(0, prop.name); //sets the text of the item 
      propertyItems[propertyItems.size()-1]->setText(1, prop.value);//set the text of the other item 
      propertyItems[propertyItems.size()-1]->setFlags(Qt::ItemIsEditable); 
      ui->treeWidget_3->insertTopLevelItem(ui->treeWidget_3->topLevelItemCount(), propertyItems[propertyItems.size()-1]); //appends the items 
      counter ++; 

void MainWindow::onTreeWidget3ItemDoubleClicked() 
{ 
    if (ui->treeWidget_3->currentColumn() == 2) { 
     ui->treeWidget_3->editItem(ui->treeWidget_3->currentItem(), ui->treeWidget_3->currentColumn()); 
    } 
} 

是我的做法。 ontreeWidget3ItemDoubleClickedtreeWidget::doubleClicked连接,treeWidget_3有NO edit-triggers

但是:当我执行程序时,QTreeView只是变灰了。

这么说,我也试过

propertyItems[propertyItems.size()-1]->setFlags(propertyItems[propertyItem.size()].flags | Qt::ItemIsEditable); 

treeWidget_3没有变灰掉了,但它仍然是不可编辑...

我该如何解决这个问题?

BTW:我是一个福利局QT间期,所以我可能已经忘了什么是至关重要的。对不起在这种情况下。

documentation提到:

的QTreeWidgetItem类用于与QTreeWidget方便的类使用提供了一个项目。

这意味着它不会对所有用例的工作。解决的办法是创建自己的模型和过载的flags(const QModelIndex& index)方法返回appropriate values(只读列可编辑的一个基本Qt:: ItemIsEnabledQt:: ItemIsEnabled | Qt::ItemIsEditable)。您可以从index.column()获得专栏。

Qt提供了一个example开始与树木和模型。

+0

为了也就是说,在其他问题接受的解决方案_do_回答这个问题,但你必须从'QTreeWidget'到'QTreeView'才能使用自己的模型改变。 – cbuchart

+0

好的,谢谢;)它现在有效 – ThefrenchSpeedruns

+0

很高兴帮助你! – cbuchart