Bonjour,
Mon problème est le suivant:
Je souhaiterais mettre à disposition, dans la fenêtre principale du programme, plusieurs outils de traitement de fichier, sélectionnable via leur bouton attitré.
L'un de ces boutons doit, lorsqu'il est cliqué, permettre de choisir un fichier.txt et l'afficher dans une seconde fenêtre (un QDialog) afin d'être modifié (puis d'autre actions seront possible à l'avenir).
Cependant, lorsque je clique sur le bouton "Voir/Modifier le fichier", je choisis mon fichier puis le programme s'arrête avec l'erreur "Le programme s'est terminé subitement".
Voici mes fichiers ainsi que le code de la méthode concerné:
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
57
58
59
60 AcceuilSensi.h #ifndef ACCEUILSENSI_H #define ACCEUILSENSI_H #include <QMainWindow> #include <QDebug> #include <QString> #include <QFileDialog> #include <QFile> #include <QFileInfo> #include <QInputDialog> #include <QMessageBox> #include <QApplication> #include <QTranslator> #include <QLocale> #include <QLibraryInfo> #include <QRegularExpression> #include "dialtext.h" #include "ui_dialtext.h" QT_BEGIN_NAMESPACE namespace Ui { class acceuilSensi; } QT_END_NAMESPACE class acceuilSensi : public QMainWindow { Q_OBJECT public: acceuilSensi(QWidget *parent = nullptr); DialText dialtext; ~acceuilSensi(); private slots: void on_btnParser_clicked(); void on_btnSuppDouble_clicked(); void on_btnLister_clicked(); void on_btnComparer_clicked(); void on_btnSearchMail_clicked(); void on_btnSeeFile_clicked(); private: Ui::acceuilSensi *ui; Ui::DialText *dial; QDir defaultDir= (QDir::homePath() + "/Documents"); int parser(QString filename); int delDoublons(QString filename); int lister(QString filename, QString separateur); int compare(QString file1, QString file2); QStringList count(QString file1, QString file2); int searchMail(QString filename); int showFile(QString filename); }; #endif // ACCEUILSENSI_HJe précise que je code sur la version Linux de QtCreator. Merci d'avance.
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 acceuilSensi.cpp #include "acceuilsensi.h" #include "ui_acceuilsensi.h" acceuilSensi::acceuilSensi(QWidget *parent) : QMainWindow(parent) , ui(new Ui::acceuilSensi) { ui->setupUi(this); QDir::setCurrent(QDir::homePath() + "/Documents"); } acceuilSensi::~acceuilSensi() { delete ui; } int acceuilSensi::showFile(QString filename) { int res = 0; //bool save = 0; QFile openFile(filename); if(openFile.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream flux(&openFile); QString text = flux.readAll(); dialtext.show(); dial->plainText->setPlainText(text); } else { qDebug() << "ERREUR: Le fichier n'a pas put être ouvert."; res = 1; } return res; } void acceuilSensi::on_btnSeeFile_clicked() { QString file; QFileDialog dialFile; dialFile.setDirectory(defaultDir); file = dialFile.getOpenFileName(); if(!file.isEmpty()) { int res = showFile(file); ui->labelStatut->setText("Fait: fin de l'opération"); } }
Partager