只有一列QTreeWidget可编辑//故障排除

时间:2017-03-09 11:24:56

标签: c++ qt items

请注意,此问题不是问题Making only one column of a QTreeWidgetItem editable的重复,因为它提出的解决方案无效。

您好,所以我只想让我的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没有edit-triggers

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

那就是说,我也试过了

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

treeWidget_3不再灰显,但它仍然是不可编辑的......

我该如何解决这个问题?

顺便说一句:我是Qt的新手,所以我可能忘记了一些至关重要的事情。对不起,在这种情况下。

1 个答案:

答案 0 :(得分:1)

documentation中所述:

  

QTreeWidgetItem类提供了一个用于QTreeWidget便利类的项目。

这意味着它不会适用于所有用例。解决方案是创建自己的模型并重载flags(const QModelIndex& index)方法,返回appropriate values(基本Qt:: ItemIsEnabled为只读列,Qt:: ItemIsEnabled | Qt::ItemIsEditable为可编辑列。您可以从index.column()获取该列。

Qt提供example以树和模型开始。