QMap в QML как лучше всего сделать?
Это должно помочь https://stackoverflow.com/questions/24362946/how-c...
Альтернативный вариант doc.qt.io/qt-5/qtcore-tools-customtype-example.html
В общем случае, как уже посоветовали, создать свой собственный тип, но всё равно не получится с ним работать как с массивом m[4]=42; будет что-то вроде m.set(4,42); и к тому же опять придётся скорее всего писать "обёртки", либо перегружать оператор [] и так далее - в зависимости от Вашей ситуации.
Вы можете работать как с обычным массивом через QList, но при этом будут особенности QList - если в QML сделать m[4]=42;  то с 0 по 3 список будет заполнен нулями и, возможно, Вам придётся вносить ещё изменения в код для обхода этой особенности. 
Вообще, теоретически, можно унаследоваться от QVariant, перегрузив оператор = , что бы выполнить внутри преобразование QMap к QVariantMap , сложить всё это аккуратно в QVariant  и перегрузить (), что бы выполнить обратное преобразование.  Будет немного трудновато, но вполне возможно. Либо, возможно, заставить думать мета-систему Qt о QMap как о QVariant map.