onjour a tous ,
je travaille sur un projet sous QT ; je dois lire les contenues d'un fichier qui seront les données d'une autre fonction, j'ai la fonction qui s'occupe de lire le contenue de fichier lorsque je le teste seul il fonctionne bien , voila le code :
mon projet c'est une interface graphique , donc je dois ajouter ce code au sein de programme de la conception de l'interface ; je le fais comme ceci :
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
54
55
56 #include <iostream> #include <string> #include <sstream> #include <vector> #include <fstream> * using namespace std; * struct point { double x; double y; double z; }; * vector<point> readingData(string inputFileName) { vector<point> inputData; string line, token; point newPoint; ifstream file; file.open(inputFileName.c_str(), ifstream::in); if (file.is_open()) { while (getline(file, line)) { istringstream ss(line); getline(ss, token, ','); newPoint.x = stod(token); getline(ss, token, ','); newPoint.y = stod(token); getline(ss, token, ','); newPoint.z = stod(token); inputData->push_back(newPoint); } return inputData; } else cout << "Unable to open file"; file.close(); } int main() { vector<point> inputData; readingData("test.txt"); for (int i = 0; i < inputData.size(); i++) { cout << inputData.at(i).x << "* " << inputData.at(i).y << "* " << inputData.at(i).z << endl; } system("pause"); return 0; }
fichier.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public : vector<point> readingData(string inputFileName, vector<point>* inputData);
j'ai recopie la fonctionne ds le fichier .cpp dehors la classe MaFenetre :
et a l'interieur de la classe MaFenetre je fais appelle a la fonction pour recopier le fichier dans une autre fonction :
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 vector<point> readingData(string inputFileName) { vector<point> inputData ; string line, token; point newPoint; ifstream file; file.open(inputFileName.c_str(), ifstream::in); if (file.is_open()) { while (getline(file, line)) { istringstream ss(line); getline(ss, token, ','); newPoint.x = stod(token); // getline(ss, token, ','); newPoint.y = stod(token); // getline(ss, token, ','); newPoint.z = stod(token); inputData->push_back(newPoint); } return inputData ; } else cout << "Unable to open file"; file.close(); }
et lorsque je compile j'ai le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 QScatter3DSeries *series = new QScatter3DSeries(graph); vector<point> inputData = MaFenetre::readingData("text.txt"); QScatterDataArray data; for (int i=0; i<inputData.size();i++) {data.push_back(QScatterDataItem(QVector3D(inputData[0],inputData[1],inputData[2]))); } series->dataProxy()->addItems(data); graph->addSeries(series);
Partager