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
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;
}
Voilà, après compilation j'ai ces 3 erreurs qui apparaissent:

..\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é

Code : Sélectionner tout - Visualiser dans une fenêtre à part
*MonCSV = ClasseCSV.OuvertureCsvLectureOnly(*MonCSV)
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')

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 !