Bonjour à tous, voila j'ai un soucis avec QXmlStreamReader.
Enfin pas vraiment un soucis mais je n'arrive pas à faire ce que je veux.
A partir de mon fichier .ui obtenu avec QtDesigner (une simple interface données patients), je souhaiterais pouvoir créer un fichier xml qui contient uniquement le nom des champs à remplir dans le formulaire.
Voici un bref extrait du fichier pour vous donner une idée :
Code xml : 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
54
55
56
57
58 <item row="1" column="1"> <widget class="QTextEdit" name="ContexteExamen_2"> <property name="font"> <font> <pointsize>10</pointsize> </font> </property> </widget> </item> <item row="4" column="0"> <widget class="QLabel" name="TypeExamen"> <property name="palette"> <palette> <active> <colorrole role="Text"> <brush brushstyle="SolidPattern"> <color alpha="255"> <red>255</red> <green>0</green> <blue>0</blue> </color> </brush> </colorrole> </active> <inactive> <colorrole role="Text"> <brush brushstyle="SolidPattern"> <color alpha="255"> <red>255</red> <green>0</green> <blue>0</blue> </color> </brush> </colorrole> </inactive> <disabled> <colorrole role="Text"> <brush brushstyle="SolidPattern"> <color alpha="255"> <red>28</red> <green>57</green> <blue>86</blue> </color> </brush> </colorrole> </disabled> </palette> </property> <property name="font"> <font> <pointsize>10</pointsize> </font> </property> <property name="text"> <string>Type d'EEG (*)</string> </property> </widget> </item>
En gros ce que je souhaiterais faire, c'est prendre uniquement les widgets qui ont pour attribut class "QLabel", et ensuite extraire de ces widget la valeur de leur "string", dans mon exemple seul le 2eme widget m'interesse puisqu'il est de type QLabel, et son string serait "Type d'EEG".
J'arrive à détecter chaque widget, et à déterminer si son attribut class est "QLabel" ou non avec le code suivant :
Ma question est donc la suivante, une fois que j'ai bien detecté que mon widget est un QLabel, comment faire pour extraire son string? Comment indiquer au reader qu'il doit extraire UNIQUEMENT les strings dont les widget sont des QLabel?
Code : 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 void mafenetre::lectureFormulaire() { QXmlStreamReader reader; QString filename="mafenetre.ui"; QFile file(filename); file.open(QFile::ReadOnly | QFile::Text); reader.setDevice(&file); reader.readNext(); while(!reader.atEnd()){ reader.readNext(); if(reader.isStartElement()){ if(reader.name() == "widget"){ QXmlStreamAttributes attrs = reader.attributes(); QString tmp = attrs.value("class").toString(); if(tmp == "QLabel"){ /* ici le code à compléter ... */ } } } } } } file.close(); }
Merci d'avance. Si ma question n'est pas claire (et je peux le concevoir) n'hésitez pas à me demander des précisions
Partager