Название: QTableView + QItemDelegate Отправлено: Zmeishe от Октябрь 24, 2008, 08:12 Есть два делегата:
один возвращает editor типа QLineEdit другой QDateEdit. Когда пользователь в QTableView находится в ячейке и только собирается редактировать значение, editor ещё не виден(или не создан). Пользователь просто начинает нажимать кнопки, создаётся делегат и: - в случае с делегатом типа QLineEdit значения нажатых клавиш сразу отображаются в editor`e, - в случае с делегатом типа QDateEdit значение первой нажатой клавиши НЕ отображается в editor`e. Например: необходимо ввести дату '24.10.2008'. Нажатие на '2' просто переведёт ячейку в состояние edit, а затем будет введена дата '4' и делегат "упрётся рогом" т.к. маска(формат) ввода требует две позиции т.е. '04' В результате производительность работы пользователя падает, а раздражающий фактор растёт. Что можно придумать ? Как заставить editor типа QDateEdit не пропускать ввод первого символа ? Я повесил eventFilter(QObject* obj, QEvent* e) на editor и отследил, что нажатие на первую клавишу туда поступает сразу после создания editor`a, а вот символ не рисуется. Код создания editor`a Код: QWidget *QDateDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem& /*option*/, Для QLineEdit`a всё тоже самое без премудростей, но работает без раждражения. Qt 4.3.3 Название: Re: QTableView + QItemDelegate Отправлено: registrationfedser87 от Октябрь 24, 2008, 08:56 Тебе наверно надо поиграться с триггерами редактирования(и eventFilter наверно не понадобится). Для проверки попробуй в QTableView включить все тригеры:
Код: tableView->setEditTriggers(QAbstractItemView::AllEditTriggers); Название: Re: QTableView + QItemDelegate Отправлено: Zmeishe от Октябрь 24, 2008, 09:16 Ещё неудобнее, т.к. ячейка сразу и всегда в режиме edit. При попытке переместиться на другую строку клавишами со стрелками происходит изменение значений дня/месяца/года т.к. QDateEdit наследник от QAbstractSpinBox.
Название: Re: QTableView + QItemDelegate Отправлено: kirill от Октябрь 24, 2008, 12:42 Перепиши QDateEdit
Название: Re: QTableView + QItemDelegate Отправлено: Zmeishe от Октябрь 24, 2008, 13:14 Проще в QLineEdit validator и inputMask воткнуть.
|