Скорее всего нужно переопределить:
void QAbstractItemView::closeEditor ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint ) [virtual protected slot]
у QTableWidget. И там смотреть удовлетворяют требованиям данные или нет.
Пример:
if (!data.isValid)
return;
else
QAbstractItemView::closeEditor(editor, hint);
Сам не пробовал, но должно быть все ok.