In your code the trackModel->editStrategy() is QSqlTableModel::OnRowChange. Changes are not written to the database until you select a different row (or call submitAll()). If there is no other row to select then the data is not committed. The row header for the new row has "*" until it is committed.
I also see run time warnings:
QAbstractItemModel::endInsertRows: Invalid index ( 1 , 0 ) in model QSqlTableModel(0xe1af70)
QAbstractItemModel::endInsertRows: Invalid index ( 1 , 2 ) in model QSqlTableModel(0xe1af70)
QAbstractItemModel::endInsertRows: Invalid index ( 1 , 3 ) in model QSqlTableModel(0xe1af70)
To copy to clipboard, switch view to plain text mode
if I try to force the new track (at row 0 not 1) to commit by adding another track.
Bookmarks