а что не понятного... ?
ASSERT: "idx >= 0 && idx < s"
у тебя -1..... строка не может быть отрицательной...
Насчет отрицательного числа, читаем мануал
bool QSqlTableModel::insertRecord ( int row, const QSqlRecord & record )
Inserts the record after row. If row is negative, the record will be appended to the end. Calls insertRows() and setRecord() internally.
Returns true if the row could be inserted, otherwise false.