como o método `setData` pode falhar?
A documentação para QAbstractItemModel.setData, que reproduzi abaixo, diz que o método deve retornar verdadeiro se for bem-sucedido ou falso caso contrário. Minha pergunta é a seguinte: Como esse método pode não ter sucesso?
bool QAbstractItemModel :: setData (const QModelIndex & index, const QVariant & value, int role = Qt :: EditRole)
Define os dados da função para o item no índice para valor.
Retorna verdadeiro se for bem-sucedido; caso contrário, retorna falso.
O sinal dataChanged () deve ser emitido se os dados forem configurados com sucesso.
A implementação da classe base retorna falso. Esta função e data () devem ser reimplementados para modelos editáveis.
Nota: Esta função pode ser chamada por meio do sistema de meta-objeto e do QML. Consulte Q_INVOKABLE.
Veja também Qt :: ItemDataRole, data () e itemData ().
Respostas
O objetivo do valor de retorno de setData () é indicar se a informação associada à função e ao QModelIndex foi editada e dependerá do desenvolvedor se retorna verdadeiro ou falso.
Alguns exemplos que ilustram o acima:
Se você deseja que seu modelo não seja editável (que por padrão é qualquer modelo), sempre retorne falso.
Se você quiser que apenas alguns itens sejam editáveis ou não, você retornará verdadeiro ou falso dependendo do item.
Se você deseja que o novo valor atenda a certas restrições. Um exemplo prático poderia ser se os itens a editar devem ter idades, portanto, para valores negativos, ele deve retornar falso e, para os outros casos, verdadeiro.
O método está em uma classe abstrata e pode ser substituído. Se for substituído, tudo pode acontecer nessa nova implementação, certo?
A implementação da classe base retorna falso. Esta função e data () devem ser reimplementados para modelos editáveis.
Portanto, não só é possível que seja sobrescrito, como até mesmo necessário em alguns casos. O que "sucesso" significa depende do implementador do método de substituição, e ele pode retornar trueou false.