PDA

View Full Version : Manipulating data with QSqlRelationalTableModel and QTableView



nagpalma
6th July 2007, 11:47
Hello,
I'm using QSqlRelationalTableModel and QTableView to access a sqlite database :


..... sentenceModel = new QSqlRelationalTableModel(this);
sentenceModel->setTable("sentence");
sentenceModel->setRelation(Sentence_ActionId,
QSqlRelation("action", "id", "text"));
sentenceModel->setRelation(Sentence_CharacterId,
QSqlRelation("character", "id", "text"));
sentenceModel->setSort(Sentence_Text, Qt::AscendingOrder);
sentenceModel->setHeaderData(Sentence_Text, Qt::Horizontal, tr("Text"));
sentenceModel->setHeaderData(Sentence_Sound, Qt::Horizontal, tr("Sound"));
sentenceModel->setHeaderData(Sentence_Language, Qt::Horizontal, tr("Language"));
sentenceModel->setHeaderData(Sentence_ActionId, Qt::Horizontal, tr("Action"));
sentenceModel->setHeaderData(Sentence_CharacterId, Qt::Horizontal, tr("Character"));
sentenceModel->select();

sentenceTableView = new QTableView;
sentenceTableView->setModel(sentenceModel);
sentenceTableView->setItemDelegate(new QSqlRelationalDelegate(this));
sentenceTableView->setSelectionMode(QAbstractItemView::SingleSelectio n);
sentenceTableView->setSelectionBehavior(QAbstractItemView::SelectRows );
sentenceTableView->setColumnHidden(Sentence_Id, true);
sentenceTableView->resizeColumnsToContents(); .....

and when i try to add a new record :

void MainWidget::addSentence()
{
int row = 0;
if (sentenceTableView->currentIndex().isValid())
row = sentenceTableView->currentIndex().row();

sentenceModel->insertRow(row);
QModelIndex index = sentenceModel->index(row, Sentence_Text);
sentenceTableView->setCurrentIndex(index);
sentenceTableView->edit(index);
}

i receive the error:

ASSERT: "idx >= 0 && idx < s" in file c:\iwmake\build_vs2005_commercial_________________ padding_________________\include\qtcore\../../src/corelib/tools/qvarlengtharray.h, line 78


Any help would be appreciated.
Thanks,
Palma

jpn
7th July 2007, 08:41
Looks like you might have run into this bug (http://trolltech.com/developer/task-tracker/index_html?method=entry&id=118547). Try updating to Qt 4.3.0.