Bonjour,

Afin de pouvoir effectuer un log d'un état courant de l'affichage d'une IHM QML, ou de pouvoir sauvegarder ou restaurer un certain affichage, ou autre utilisation, j'aimerais accéder à un temps t aux propriétés courantes des objets QML présent dans mon IHM, c'est à dire les choses configurables avec un fichier statique : x, y, width, height, mais aussi les anchors, les enfants et leurs propriétés etc. En effet l'IHM est dynamique et affiche des composants selon les désirs de l'utilisateur. Un peu à la sauce du QML Designer par exemple mais différent dans le sens où les composants prennent directement vie via component.createObject.

Côté C++, j'accède au parent principal via
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
mainView->rootObject()->findChild<QObject*>("QMLWindow");

Mon problème est que je suis bloqué car quand j'analyse les propriétés je tombe sur des Variant bizarres et nouveaux pour moi difficiles à exploiter via
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
const QMetaObject* metaObject = p_object->metaObject();
QString attName = metaObject->property(indexProperty).name();
        QVariant attValueVariant = p_object->property(metaObject->property(indexProperty).name());
        QString attValueTypeName = p_object->property(metaObject->property(indexProperty).name()).typeName();

comme par exemple
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
"parent"  :  QVariant(QDeclarativeItem*, ) 
"parent" "QDeclarativeItem*" 
"data"  :  QVariant(QDeclarativeListProperty<QObject>, ) 
"data" "QDeclarativeItem*" 
QStandardItem::setChild: Ignoring duplicate insertion of item 0x1d3d1dd8
"resources"  :  QVariant(QDeclarativeListProperty<QObject>, ) 
"resources" "QDeclarativeItem*" 
QStandardItem::setChild: Ignoring duplicate insertion of item 0x1d3d1dd8
"states"  :  QVariant(QDeclarativeListProperty<QDeclarativeState>, ) 
"states" "QDeclarativeListProperty<QDeclarativeState>" 
"transitions"  :  QVariant(QDeclarativeListProperty<QDeclarativeTransition>, ) 
"transitions" "QDeclarativeListProperty<QDeclarativeTransition>" 
"state"  :  QVariant(QString, "") 
"state" "" 
"childrenRect"  :  QVariant(QRectF, QRectF(0,0 46x18) ) 
"childrenRect" "QRectF" 
"anchors"  :  QVariant(QDeclarativeAnchors*, ) 
"anchors" "QDeclarativeAnchors*" 
"left"  :  QVariant(QDeclarativeAnchorLine, ) 
"left" "QDeclarativeAnchorLine" 
"right"  :  QVariant(QDeclarativeAnchorLine, ) 
"right" "QDeclarativeAnchorLine" 
"horizontalCenter"  :  QVariant(QDeclarativeAnchorLine, ) 
"horizontalCenter" "QDeclarativeAnchorLine" 
"top"  :  QVariant(QDeclarativeAnchorLine, ) 
"top" "QDeclarativeAnchorLine" 
"bottom"  :  QVariant(QDeclarativeAnchorLine, ) 
"bottom" "QDeclarativeAnchorLine" 
"verticalCenter"  :  QVariant(QDeclarativeAnchorLine, ) 
"verticalCenter" "QDeclarativeAnchorLine" 
"baseline"  :  QVariant(QDeclarativeAnchorLine, ) 
"baseline" "QDeclarativeAnchorLine" 
"baselineOffset"  :  QVariant(double, 0) 
"baselineOffset" "0" 
"clip"  :  QVariant(bool, false) 
"clip" "false" 
"focus"  :  QVariant(bool, false) 
"focus" "false" 
"activeFocus"  :  QVariant(bool, false) 
"activeFocus" "false" 
"transform"  :  QVariant(QDeclarativeListProperty<QGraphicsTransform>, ) 
"transform" "QDeclarativeListProperty<QGraphicsTransform>" 
"transformOrigin"  :  QVariant(int, 4) 
"transformOrigin" "4" 
"transformOriginPoint"  :  QVariant(QPointF, QPointF(0, 0) ) 
"transformOriginPoint" "QPointF" 
"smooth"  :  QVariant(bool, false) 
"smooth" "false" 
"implicitWidth"  :  QVariant(double, 0) 
"implicitWidth" "0" 
"implicitHeight"  :  QVariant(double, 0) 
"implicitHeight" "0"

En fait, je ne vois pas comment exploiter ça, je pense que je suis dans une mauvaise solution pour sérialiser / désérialiser mes objets QML dynamiques présents.
J'ai vu que QML Designer faisait directement une modif sur le fichier en cours de design pour s'en sortir, mais moi ça passe par la mémoire.

Comment procéder pour arriver à récupérer les propriétés exploitables en temps courant des objets dynamiques présents sur une IHM QML présent dans un rootObject ?

Par avance, je vous remercie pour la moindre piste qui me ferait avancer