制作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());
}
}
是我的做法。 ontreeWidget3ItemDoubleClicked
与treeWidget::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:: ItemIsEnabled
和Qt:: ItemIsEnabled | Qt::ItemIsEditable
)。您可以从index.column()
获得专栏。
Qt提供了一个example开始与树木和模型。
为了也就是说,在其他问题接受的解决方案_do_回答这个问题,但你必须从'QTreeWidget'到'QTreeView'才能使用自己的模型改变。 – cbuchart
好的,谢谢;)它现在有效 – ThefrenchSpeedruns
很高兴帮助你! – cbuchart