Я новичок в qt sql, и проблема, возникающая в QSqlRelationalModel, меня слишком озадачила.
Конструктор модели:
RecordTableModel::RecordTableModel(QSharedPointer<BookTableModel> bookTableModel, QObject *parent)
: QSqlRelationalTableModel(parent), BookTable(BookTableModel)
{
setTable("record");
select();
setRelation(fieldName::genre, QSqlRelation("genres", "id", "genre"));
setRelation(fieldName::recordState, QSqlRelation("recordStates", "id", "state"));
/*test start*/
addEntry(0);
/*test end*/
}
addEntry:
int RecordTableModel::addEntry(int bookId)
{
QSqlRecord record = this->record();
QSqlRecord bookRecord = bookTable->getRecord(bookId);
//modify record
record.setValue(fieldName::bookId, bookRecord.value(BookTableModel::fieldName::bookId));
record.setValue(fieldName::bookName, bookRecord.value(BookTableModel::fieldName::bookName));
record.setValue(fieldName::author, bookRecord.value(BookTableModel::fieldName::author));
//... others same like this
if (!insertRecord(-1, record)) {
qDebug() << lastError() << "fail to insert record in addEntry function";
}
submitAll();
}
В тесте консоль показывает сообщение выше, но lastError () не содержит сообщения об ошибке. И на самом деле запись успешно вставлена в таблицу. Может ли кто-нибудь помочь решить проблему?