where the name is my custom role instead of Qt::DisplayRole (qml property is display, if I'm not mistaken), and since I can't find qml property for Qt::CheckStateRole, I need to put my custom role, checked.

Finally, the questions.
Is it safe to conclude that the Qt::DisplayRole is exposed to QML via display property, while the Qt::CheckStateRole isn't? Why is it? Is there any rational explanation behind this behaviour?
On the downside, I can't use the same QStandardItemModel code for both QWidgets and QML, since I need to create custom roles for the QML side. Which means, I need to have two different models, one for QWidgets, and one for QML. Yes, I'm aware that I really don't need two instances, but nevertheless, this seems like waste of time and resources. And what's more, the big chunk of the code is practically the same.
Ideally, I'd like to be able to write model code (now it's the QStandardItemModel, developed on the c++ side, nothing fancy), and use it in the QML, or in QWidgets.
Maybe I'm missing something, but I couldn't find anything in the docs about that.