Bonjours !
Voici une description du problème que je rencontre, dans mon apprentissage long et délicat de Qt :
j'ai fait :
dans mon fichier .h de ma classe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private : QString *tableau = NULL;
j'ai modifié ce tableau dans un slot, en faisant :
(nombre a auparavant été définis dans le même slots)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 tableau = new QString[nombre];
Ensuite je rempli mon tableau, et tout va très bien.
Sauf que, lorsque je fait, dans un autre slot, une fois le tableau rempli (c'est obligatoire, car le second ne peut pas être appelé tant que le premier ne l'a pas été (le bouton est désactivé)) :
le compilateur m'insulte et me dit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 QString chaine; chaine = "un mot "+ tableau[0]
invalids operands of types 'const char[8]' and 'QString*' to binary 'operator+'
Pourtant, selon ce que je pensait savoir des tableaux, une "case" de mon tableau doit contenir un objet en tout point semblable à une QString ...
Et donc que je suis censé pouvoir l'ajouter à une autre chaine, l'afficher, ...
Mais le pire, c'est que je peux l'afficher, mais uniquement dans mon slot ou je l'ai rempli. Donc, dans le troisième slot, là ou le bug se trouve, il refuse d'afficher mon tableau[0] et me dit :
no matching function for call 'QMessageBox::information(MainWindow* const, const char[8], QString*&)
Donc il y a une grosse différence entre QString et une QString dans un tableau. La question est, pourquoi il l'affiche dans mon premier slot, et pas dans mon second ... car la ligne de code est la même, et le tableau a pas changé entre temps ...
Voila où j'en suis dans ma réflexion. J'aurais aimer savoir qu'est-ce qui se passe, pourquoi, et comment faire pour résoudre ce problème.
Merci d'avance ^^
Partager