I have found partial "solution":

QML can not correctly work with quint8 when it was typedefed and qRegistered. Changing initial type to quint32 solved the issue when QML can not correctly display its value. Passing Q_GADGET to QML via model's method data with using QVariant as a "transport" type works incorrectly (Q_GADGET inner variables cannot be changed for some reason), but passing it directly with separate model's method as Example getExpample(int index);

works well. Anyway copying the Example's object in the both cases works well, but the last one allows to modify Example's members in QML.

I can not say that my issue was solved (now I'm going to use quint32 and the second approach to pass Q_GADGET copy to QML), but I'm wondering, if this is a correct QML/QVariant/Q_GADGET behaviour to avoid such issues further.