@GrecKo said in Restore TextInput after invalid input:
onEditingFinished: m.setData(m.index(index, 0), text)
No need to call setData either in 6.9, you can do it with onEditingFinished: model.display = text.
Indeed. Simplifying further:
ListView {
anchors.fill: parent
model: m
delegate: TextInput {
text: display
onEditingFinished: display = text
}
}
bool setData(const QModelIndex &index, const QVariant &value, int role) override {
auto updated = (role == Qt::ItemDataRole::DisplayRole) ? value.toString().toUpper() : value;
if (role == Qt::ItemDataRole::DisplayRole && updated.toString().contains('!')) {
return false;
}
return QStandardItemModel::setData(index, updated, role);
}