в основном в QSqlQuery если не требуется отдельная обработка или повышенная производительность - а что вы называете громоздкой конструкцией доступа к полям?
я так делаю
QSqlQury query;
//........
//.... открыт и с данными
QSqlRecord rec = query.record();
int nID = query.value( rec.indexOf("ID") ).toInt();
QString sComment = query.value( rec.indexOf("COMMENT") ).toString();
если обращение к столбца идет несколько раз можно еще и сохранить их индексы в наборе данных типа:
int nIDX_ID = rec.indexOf("ID");
int nIDX_ID = rec.indexOf("COMMENT");
а дальше также обращаться
query.value( nIDX_ID ).toInt();
query.value( nIDX_ID ).toInt();
вроде не громоздкие? - когда то в дельфи датасетах работал с FieldByName - можно и что-то подобное написать... но мне каж. это и не нужно