Thanks, anda_skoa!
That's exactly what I did - and it works! I have a rather complex model with several lists in it and it was not easy to get it done, but here are a few details for others with the same problem. This is not a compileable example (too big), it may have been shortened too much and may contain simplification mistakes - but it might perhaps be able to shorten the solution finding process of others anyway.

I need several buttons, each with several data fields on it. The latter are defined here:
Qt Code:
  1. class DataFieldContent: public QObject
  2. {
  3. Q_OBJECT
  4. Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
  5. Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
  6. signals:
  7. void textChanged();
  8. void colorChanged();
  9. public:
  10. [...]
  11.  
  12. //getters
  13. QString text();
  14. QColor color();
  15.  
  16. //setters
  17. void setText(QString text);
  18. void setColor(QColor color);
  19. };
To copy to clipboard, switch view to plain text mode 

All my data fields are organized in a C++ class "Content":
Qt Code:
  1. class Content: public QObject
  2. {
  3. Q_OBJECT
  4. Q_PROPERTY(QQmlListProperty<DataFieldContent>dataFieldContents READ dataFieldContents NOTIFY dataFieldContentsChanged)
  5.  
  6. signals:
  7. void dataFieldContentsChanged();
  8. public:
  9. [...]
  10. QQmlListProperty<DataFieldContent> dataFieldContents() { return
  11. QQmlListProperty<DataFieldContent> (this,
  12. 0,
  13. &appendDataFieldContent,
  14. &dataFieldContentsCount,
  15. &dataFieldContentAt,
  16. &dataFieldContentsClear);
  17. }
  18.  
  19. static void appendDataFieldContent(QQmlListProperty<DataFieldContent> *list, DataFieldContent *p);
  20. static int dataFieldContentsCount(QQmlListProperty<DataFieldContent> *list);
  21. static DataFieldContent* dataFieldContentAt(QQmlListProperty<DataFieldContent> *list, int i);
  22. static void dataFieldContentsClear(QQmlListProperty<DataFieldContent> *list);
  23.  
  24. protected:
  25. QList<DataFieldContent*>m_dataFieldContents;
To copy to clipboard, switch view to plain text mode 

As I need a bunch of those Buttons, there is also a GroupContent, basically a List of Contents (Note that QList does not derive from QObject, you can't "just use" it).

Qt Code:
  1. class GroupContent: public QObject
  2. {
  3. Q_OBJECT
  4. Q_PROPERTY(QQmlListProperty<Content> contents READ contents NOTIFY contentsChanged)
  5.  
  6. signals:
  7. void contentsChanged();
  8. public slots:
  9. void contentsChangedSlot();
  10.  
  11. public:
  12. [...]
  13. QQmlListProperty <Content> contents();
  14.  
  15. static void appendContent(QQmlListProperty<Content> *list, Content *p);
  16. static int contentsCount(QQmlListProperty<Content>*list);
  17. static Content* contentAt(QQmlListProperty<Content> *list, int i);
  18. static void contentsClear(QQmlListProperty<Content> *list);
  19.  
  20. void addContent(Content* p) { m_Contents.append(p);}
  21.  
  22.  
  23. protected:
  24. QList<Content*> m_Contents;
  25. };
To copy to clipboard, switch view to plain text mode 

On the QML side we need a display: MyButton.qml:

Qt Code:
  1. Item {
  2. id: ButtonBasis
  3. property var dataFields;
  4.  
  5. Grid {
  6. [...]
  7. Repeater {
  8. id: dataFieldRepeater
  9. model: ButtonBasis.dataFields
  10. Text {
  11. text: dataFieldRepeater.model[index].text
  12. color: dataFieldRepeater.model[index].color
  13. [...]
  14.  
  15. }
  16. }
  17. }
  18. }
To copy to clipboard, switch view to plain text mode 

And all that is linked together in main.qml:

Qt Code:
  1. Repeater {
  2. id: contentRepeater
  3. model: groupContent.contents
  4. delegate: MyButton {
  5. dataFields: contentRepeater.model[index].dataFieldContents
  6. [...]
  7. }
  8. }
To copy to clipboard, switch view to plain text mode 

Don't forget to register your classes to QML (e.g. in main.cpp) by:

Qt Code:
  1. qmlRegisterType<DataFieldContent>("de.yourdomain.whatsoever.whatsoever",2,0,"DataFieldContent");
  2. qmlRegisterType<Content>("de.yourdomain.whatsoever.whatsoever",2,0,"Content");
  3. qmlRegisterType<GroupContent>("de.yourdomain.whatsoever.whatsoever",2,0,"GroupContent");
To copy to clipboard, switch view to plain text mode