crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Делегат + QDateTimeEdit
phpCoder
  опции профиля:
сообщение 2.1.2015, 18:38
Сообщение #1


Студент
*

Группа: Неактивирован
Сообщений: 16
Регистрация: 2.12.2014
Пользователь №: 4289

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый вечер.
Есть делегат с 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);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 1:23