Il modo più semplice che ho trovato è stato quello di utilizzare 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 superiore della if
aggiunge la funzionalità di editing attraverso un OR
, ei controlli di fondo, se è lì con AND
, quindi rimuove con un XOR
.
In questo modo la funzionalità di modifica viene aggiunta quando lo si desidera e rimossa quando non lo si desidera.
Quindi, collegare questa funzione per il segnale del widget albero itemDoubleClicked()
, e scrivere il vostro 'di modificare o di non modificare' decisione all'interno del isEditable()
Non necessariamente (se non mi sbaglio). Vedi la mia risposta qui sotto. – d11
Questa è una rielaborazione molto più complessa della soluzione NoEditDelegate pubblicata di seguito, che ritengo migliore. –
Grazie a @David. Ho anche upvoted la soluzione NoEditDelegate. Sembra più ordinato e completo e lo consiglierei per più trigger di modifica. – d11