Есть делегат с QDateTimeEdit. Как (с помощью какого сигнала или еще что...) можно отловить событие завершения редактирования?
Сигнал QDateTimeEdit::editingFinished не годится. Если в таблице тыкнуть на ячейку, появляется мой редактор. Далее, если тыкнуть мышью в другом месте таблицы/окна программы, то текст из редактора вставляется в ячейку, но событие того, что этот текст вставился не происходит.
Сигнал QDateTimeEdit::dateTimeChanged не годится. Как только поменяешь циферку, так сразу редактирование прекращается.
Сигналы QDateTimeEdit::dateChanged и QDateTimeEdit::timeChanged аналогично.
Что делать? Как обычно работают с таким делегатом?
Соединение делаю как в примерах:
QWidget *DateTimeDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem&, const QModelIndex&) const
{
QDateTimeEdit *editor = new QDateTimeEdit(parent);
connect(editor, &QDateTimeEdit::editingFinished, this, &DateTimeDelegate::_commitAndCloseEditor);
editor->setDisplayFormat("dd.MM.yyyy hh:mm:ss");
return editor;
}
void DateTimeDelegate::_commitAndCloseEditor()
{
QDateTimeEdit *editor = qobject_cast<QDateTimeEdit*>(sender());
if(this->_value == editor->text()) return;
emit commitData(editor);
emit editingFinished(editor->property("row").toInt(), editor->dateTime().toString(Qt::ISODate));
emit closeEditor(editor);
}