Eu entendi! Este artigo explica como fazer isso perfeitamente
A solução é inserir TestType em um QVariantList usando o método qVariantFromValue. Então, o sinal usa QVariantList como o tipo para todos os parâmetros que são listas
TestType *tt = new TestType(this);
QVariantList list;
list.append(qVariantFromValue((TestType*)tt));
Q_EMIT mySignal(list);
o sinal é declarado assim:
Q_SIGNALS:
void mySignal(QVariantList list);
Então, ele pode ser lido perfeitamente no qml:
onMySignal: {
console.log("name of first TestType in list: " + list[0].name;
}