仅制作一列qtreewidget可编辑//故障排除

Making only one column of QTreeWidget editable // troubleshooting

本文关键字:qtreewidget 编辑 一列 故障 排除      更新时间:2023-10-16

注意到,这个问题不是一个问题的重复,因为提议的解决方案不起作用,因为它是qtreewidgetItem可编辑的一列。

你好,所以我只想制作我的树泳的一列。

            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不再灰色,但仍然是不正确的...

我该如何修复?

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

文档中提到的:

qtreewidgetItem类提供了一个与qtreewidget便利类一起使用的项目。

这意味着它将不适用于所有用例。解决方案是创建自己的模型并超载flags(const QModelIndex& index)方法返回适当的值(基本上是仅阅读列的Qt:: ItemIsEnabled,而Qt:: ItemIsEnabled | Qt::ItemIsEditable则用于可编辑的列)。您可以从index.column()获取列。

QT提供了一个从树和型号开始的示例。