Самый простой способ, который я нашел, это использовать Qt :: ItemFlags
void myClass::treeDoubleClickSlot(QTreeWidgetItem *item, int column)
{
Qt::ItemFlags tmp = item->flags();
if (isEditable(item, column)) {
item->setFlags(tmp | Qt::ItemIsEditable);
} else if (tmp & Qt::ItemIsEditable) {
item->setFlags(tmp ^ Qt::ItemIsEditable);
}
}
Верхняя часть if
добавляет функцию редактирования через OR
, а нижняя часть проверяет, есть ли она с AND
, а затем удаляет ее с помощью XOR
.
Таким образом, функциональность редактирования добавляется, когда вы этого хотите, и удаляется, когда вы этого не делаете.
Затем подключите эту функцию к сигналу itemDoubleClicked()
виджета дерева и напишите свое решение «редактировать или не редактировать» внутри isEditable()