2017-03-09 12 views
1

記住,這個問題不是問題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間期,所以我可能已經忘了什麼是至關重要的。對不起在這種情況下。

回答

1

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