Insert row into QSQLTableModel
-
Hi Folks,
I would like to insert a new row into QSQLTableModel instance via a subclass of QStyledItemDelegate:
void EditorDelegate::insertRow(QAbstractItemModel* model, const QModelIndex& index) const { model->insertRow(index.row() + 1); model->setData(model->index(index.row() + 1, 0), QUuid::createUuid()); }
In the second line would like to set the primary key.
The problem is that after the insertion a new row will be displayed without the generated UUID and the row isn't clickable so this delegate isn't draw itself on the top of the new cell.Can anybody help me? Or please sign me if more information required.
Regards,
Norbert -
Hi Folks,
I would like to insert a new row into QSQLTableModel instance via a subclass of QStyledItemDelegate:
void EditorDelegate::insertRow(QAbstractItemModel* model, const QModelIndex& index) const { model->insertRow(index.row() + 1); model->setData(model->index(index.row() + 1, 0), QUuid::createUuid()); }
In the second line would like to set the primary key.
The problem is that after the insertion a new row will be displayed without the generated UUID and the row isn't clickable so this delegate isn't draw itself on the top of the new cell.Can anybody help me? Or please sign me if more information required.
Regards,
Norbert@moravas
Hello,
It this UUID supposed to be visible in the column? If so you might want to set its role. Something like this:QUuid id = QUuid::createUuid(); model->setData(model->index(index.row() + 1, 0), id); model->setData(model->index(index.row() + 1, 0), id.toString(), Qt::DisplayRole);
Kind regards.
-
Hi,
Following Qt's documentation, insertRow insert a single row before the row given. So unless I'm mistaken, you are calling setData on the wrong index (off by one)