Bonjour,
Je souhaite faire une liste des meilleurs scores contenu dans un fichier score.txt de la forme :
nomdujoueur score;
nomdujoueur2 score2;
Je dispose d'un menu dans lequel j'ai un PushButton qui ouvre une nouvelle QWidget scorefen.
A l'ouverture, je crée un fichier s'il n'éxiste pas (ici pas de problème).
Ensuite je veux afficher le contenu de mon fichier dans ma fenetre.
Mais ici ça ne fonctionne pas, je vais vous donnez les partie importante afin que vous puissiez m'aider :
3 fichier : main.cpp / C_menu.h / C_menu.cpp
C_menu.cpp
J'ai donc essayer 2 technique :
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
41
42
43
44
45
46
47
48
49
50
51 // Ici la fonction qui est un public slots d'un bouton de la 1ère fenetre. void C_menu::AfficherScore() { QWidget *scorefen = new QWidget; scorefen->setFont(QFont("Comic Sans MS", 18)); scorefen->show(); CreateFile(); labelrempli = new QLabel*[10]; FillFile(scorefen); } // La fonction FillFile permet de remplir la fenetre scorefen. void C_menu::FillFile(QWidget *scorefen) { QFile file("score.txt"); if( !file.exists() ) { CreateFile(); } else { if (file.open(QFile::ReadOnly)) { QTextStream in(&file); int j; while (!in.atEnd()) { QString line = in.readLine(); QStringList listline = line.split(";", QString::SkipEmptyParts); label = new QLabel*[listline.size()]; for(int i=0;i<listline.size();i++) { label[i]=new QLabel(""); } for (j = 0;j <= listline.size();j++) { QString test = listline[j]; label[j]->setText(test); //QLabel *affscore = new QLabel(test); //QGridLayout *scoreLayout = new QGridLayout; //scoreLayout->addWidget(label[j], j, 0); //scorefen->setLayout(scoreLayout); } } } } }
- j'ai donc fait un split(";") que j'ai mi dans une QStringList, ensuite pour chaque case de la QStringlist je récupère le QString et je crée un QLabel comportant ce QString, ensuite je crée un layout auquelle j'ajoute le QLabel, puis j'insère ce layout dans scorefen.
Ici j'arrive à afficher seulement 1 ligne.
J'ai donc pensé à faire un tableau de QLabel mais ça ne marche pas non plus (je vous ai donné ici l'exemple avec le tableau de QLabel, en commentaire la 1ere technique ...)
Merci de m'éclairer
Partager