Итак, задачи перекинуть какой либо список из C++ в QML у меня возникают достаточно часто и первый раз решая её я потратил на это дело 2 дня! Жуть же? Ну я нуб так что мне можно...
  Итак задача: Необходим список треков в плейлисте. Тоесть список их ID в базе данных. QList к сожалению QML не понимает от слова совсем и нам пригодится такая стращная штука как QAbstractListMode вещица достаточно интересная и масивная, но мы пробежимся по верхушкам... 
 Итак поехали: результат работы можно сразу посмотреть по ссылкам:  
https://github.com/neochapay/radon/blob/master/src/model/playlistmodel.cpp  https://github.com/neochapay/radon/blob/master/src/model/playlistmodel.h  Мой мозг проел PHP и по этому мне удобнее работать с ассативными массивами, но QList не принимает несколько параметров - выход: делаем структуру:  
Код CPP-QT:struct playListItem
{int trackId
; QString trackType
; bool playEd
;}; 
  Пункт следующий: Говорим модели какие поля у нас будут, именно их мы и получим при экспорте в QML   
Код CPP-QT: 
PlayListModel
::PlayListModel(QObject *parent
) :    {
    }
 
 Только бы не забыть объявить в хедаре хеш:  
 и функцию вывода всех полей:  
Код CPP-QT:QHash roleNames
() const {return hash
;} 
  Теперь самая страшная функция, которая по сути то своей и выдаёт все данные!  
Код CPP-QT:{
    if (!index.isValid())
 
    if (index.row() >= playList.size())
    playListItem item = playList.at(index.row());
    {
        return item.trackId;
    }
    else if(role 
== Qt::UserRole+1)     {
        return item.trackType;
    }
    else if(role 
== Qt::UserRole+2)     {
        return item.playEd;
    }
}
 
 Суть её достаточно проста QML при delegate сообщает свой index - тоесть номер по порядку - мы выбираем объект и в зависимости от роли выдаём нужные данные. Для меня этот участок был самым сложным, ну а думаю с добавлением и удалением объектов модели у вас всё получится - если нет - смотрите код :)