La forma más sencilla que encontré fue utilizar 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);
}
}
La parte superior de la if
añade la funcionalidad de edición a través de un OR
, y los cheques de fondo si está allí con AND
, a continuación, elimina con un XOR
.
De esta manera se añade la funcionalidad de edición cuando lo desee, y se retira cuando no lo hace.
A continuación, conecte esta función a la señal del widget de árbol itemDoubleClicked()
, y escribir su 'para modificar o no modificar la decisión dentro de isEditable()
No necesariamente (si no me equivoco). Ver mi respuesta a continuación. – d11
Esto es mucho más retrabajo que la solución NoEditDelegate publicada a continuación, que considero mejor. –
Gracias @David. También voté por la solución NoEditDelegate. Parece más ordenado y más completo, y lo recomendaría para desencadenantes de edición múltiple. – d11