Bonjour,
Je débute depuis quelques temps en QT et je rencontre un problème pour appeler une fonction QFile dans une autre classe.
Je ne sais pas dire si le probèle vient de ma méthode d'appel ou si cela vient des spécificités de QFile.
Voici mon code :
D'abord ma classe qui s'appelle DocumentCSV :
DocumentCSV.h :
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 #ifndef DOCUMENTCSV_H #define DOCUMENTCSV_H #include <QObject> #include <QWidget> #include <QFile> #include <Qstring> #include <string> class DocumentCSV { Q_OBJECT public: DocumentCSV(); public: //recup du nom du doc csv QString GetNomDuCSV(); //ouvre un document QFile csv read only QFile OuvertureCsvLectureOnly(QFile MonCSV); }; #endif // DOCUMENTCSV_H
DocumentCSV.ccp :
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 #include "DocumentCSV.h" #include "Manager.h" #include <string> #include <QFile> #include <QTextStream> using namespace std; DocumentCSV::DocumentCSV() { } QString DocumentCSV::GetNomDuCSV() { //écrire la fonction pour obtenir la donnée QString m_nomCSV("projets.csv"); return m_nomCSV; //ok } //ouvre un document QFile csv en lecture uniquement QFile DocumentCSV::OuvertureCsvLectureOnly(QFile *MonCSV) { if (MonCSV->open(QIODevice::ReadOnly)) { } return MonCSV; }
Et enfin, l'appel de mes 2 fonctions à partir de la class F_MenuPrincipal :
f_menuprincipal.ccp
Voilà, après compilation j'ai ces 3 erreurs qui apparaissent:
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
52
53 #include "f_menuprincipal.h" #include "ui_f_menuprincipal.h" #include "F_Titres.h" #include "F_Livre.h" #include "DocumentCSV.h" #include <QDesktopServices> #include <QDate> #include <QFile> #include <QTextStream> #include <QMessageBox> #include <QDebug> #include <iostream> #include <QApplication> #include <QMouseEvent> #include <QString> #include <string> using namespace std; F_MenuPrincipal::F_MenuPrincipal(QWidget *parent) : QWidget(parent), ui(new Ui::F_MenuPrincipal) //initialisation de la fenetre { ui->setupUi(this); } void F_MenuPrincipal::OuverturePageLivreExistant(QString m_titre) { //import des données venant du csv DocumentCSV ClasseCSV; //QFile MonCSV = new QFile(); QString Adresse; Adresse = ClasseCSV.GetNomDuCSV(); Adresse="projets.csv"; QFile *MonCSV = new QFile(Adresse); MonCSV = ClasseCSV.OuvertureCsvLectureOnly(*MonCSV); //ligne sur laquelle apparaissent les 2 erreurs //... F_Livre *fl = new F_Livre; fl->show(); this->hide(); } F_MenuPrincipal::~F_MenuPrincipal() { delete ui; }
..\AppliEnfants_V3\f_menuprincipal.cpp(359) : error C2248: 'QFile::QFile'ÿ: impossible d'acc‚der … private membre d‚clar‚(e) dans la classe 'QFile'
c:\qt\5.10.1\msvc2013_64\include\qtcore\qfile.h(150)ÿ: voir la d‚claration de 'QFile::QFile'
c:\qt\5.10.1\msvc2013_64\include\qtcore\qfile.h(57)ÿ: voir la d‚claration de 'QFile'
..\AppliEnfants_V3\f_menuprincipal.cpp(359) : error C2440: '='ÿ: impossible de convertir de 'QFile' en 'QFile *'
Aucun op‚rateur de conversion d‚finie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'op‚rateur ne peut pas ˆtre appel‚
Voilà, pour aller à l'encontre de la 2ème erreur, j'ai testé
qui ne me parait pas bon et qui génère une nouvelle erreur (QFile::QFile'ÿ: impossible d'acc‚der … private membre d‚clar‚(e) dans la classe 'QFile')
Code : Sélectionner tout - Visualiser dans une fenêtre à part *MonCSV = ClasseCSV.OuvertureCsvLectureOnly(*MonCSV)
Est ce qu'un spécialiste aurait une idée pour régler ce problème, un piste? ça serait super sympa parce que là, je rame.
Le probème vient-il vraiment de mon appel ou bien des spécificités de QFile sachant que j'arrive sans problème à appeler la fonction précédente GetNomDuCSV qui est un QString...
MERCI BEAUCOUP !
Partager