diff --git a/src/view/grid/GridAccount.cpp b/src/view/grid/GridAccount.cpp index e7b3be9..8d0c986 100644 --- a/src/view/grid/GridAccount.cpp +++ b/src/view/grid/GridAccount.cpp @@ -225,7 +225,7 @@ void GridAccount::LoadOperations(std::vector* operations, int month, _kiss->GetHistory(month, year, list); _completer = new QCompleter(list); _completer->setCaseSensitivity(Qt::CaseInsensitive); - _completer->setCompletionMode(QCompleter::InlineCompletion); + //_completer->setCompletionMode(QCompleter::InlineCompletion); } TabDelegate* descriptionEditor = new TabDelegate(this, &_displayedOperations, _completer); diff --git a/src/view/grid/TabDelegate.cpp b/src/view/grid/TabDelegate.cpp index ca08f4b..913f634 100644 --- a/src/view/grid/TabDelegate.cpp +++ b/src/view/grid/TabDelegate.cpp @@ -53,3 +53,28 @@ void TabDelegate::setEditorData(QWidget *editor, line->setText(s.trimmed()); } + +/* + Implement editorEvent due to a "feature" in Qt : If we have a QLineEdit with a completer + and we press a key on a non edited cell, editor immediatly returns (it's perhaps a focus + problem) + */ +bool TabDelegate::editorEvent ( QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index ) +{ + if (event->type() == QEvent::KeyPress && _completer) + { + QTableWidgetItem* item = _grid->item(index.row(), index.column()); + if (item->text() == "") + { + _grid->editItem(item); + QLineEdit* line = qobject_cast(_grid->cellWidget(index.row(), index.column())); + QKeyEvent* kevent = dynamic_cast (event); + line->setText(kevent->text()); + _completer->setCompletionPrefix(kevent->text()); + _completer->complete(); + return true; + } + } + + return false; +} diff --git a/src/view/grid/TabDelegate.hpp b/src/view/grid/TabDelegate.hpp index b198687..e3233e9 100644 --- a/src/view/grid/TabDelegate.hpp +++ b/src/view/grid/TabDelegate.hpp @@ -37,6 +37,7 @@ public: void setEditorData(QWidget *editor, const QModelIndex &index) const; void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; + bool editorEvent ( QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index ); private: std::vector* _operations; diff --git a/src/view/grid/TableViewDelegate.hpp b/src/view/grid/TableViewDelegate.hpp index ef4be8a..27186b2 100644 --- a/src/view/grid/TableViewDelegate.hpp +++ b/src/view/grid/TableViewDelegate.hpp @@ -25,7 +25,7 @@ class TableViewDelegate : public QStyledItemDelegate { -private: +protected: GridAccount* _grid; public: