Bonjour à tous !
C’est une question bête, et même toute simple, mais je bloque… J’ai voulu me lancer, et je suis coincé, et je n’arrive pas à trouver d’exemple (c’est pas si facile à chercher).
Je veux faire une chose bien classique : une fenêtre avec (entre autres) deux boutons : "choisir le fichier" et "lancer le traitement".
Quand on clique sur le bouton "choisir le fichier", le slot envoie vers une méthode (choisirFichier()) qui ouvre un QFileDialog, on sélectionne le fichier.
Et après, tadaam, je sais plus !
Parce que le fichier, enfin son chemin renvoyé par
je peux bien le mettre dans une QString, mais cette QString est dans la méthode, et je n’arrive pas à la passer ensuite en paramètre à une autre méthode, dans un autre connect !
Code : Sélectionner tout - Visualiser dans une fenêtre à part QFileDialog::getOpenFileName(this, "Ouvrir un fichier", QString(), "Fichier texte (*.txt)")
Alors bien sûr j’ai essayé de déclarer en variable de classe, d'utiliser cette variable ensuite dans la méthode, et il me dit un truc bizarre :
"cannot convert 'QString' to 'QString*' in assignment"
Je ne peux pas poster tout le code, ça serait monstrueux.
Mais un bout :
Fenetre.h
Fenetre.cpp
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 #ifndef FENETRE_H #define FENETRE_H #include <QApplication> #include <QWidget> #include <QPushButton> #include <QMessageBox> #include <QString> #include <QFileDialog> class Fenetre : public QWidget { Q_OBJECT public: Fenetre(); public slots: void ouvrirDialogueChoisir(); void fonctionPrincipale(QString); private: QPushButton *choixFichier; QPushButton *go; QString *nomFichier; }; #endif // FENETRE_H
main.cpp (plus basique tu meurs)
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 #include "Fenetre.h" #include <QTextStream> Fenetre::Fenetre() : QWidget() { // je mets pas toute la définition des boutons, bon, c'est du blabla QObject::connect(choixFichier, SIGNAL(clicked()), this, SLOT(ouvrirDialogueChoisir())); QObject::connect(go,SIGNAL(clicked()), this, SLOT(fonctionPrincipale(nomFichier))); } void Fenetre::ouvrirDialogueChoisir() { nomFichier = QFileDialog::getOpenFileName(this, "Ouvrir un fichier", QString(), "Fichier texte (*.txt)"); } void Fenetre::fonctionPrincipale(QString nomFichierLu) { QTextStream cout(stdout, QIODevice::WriteOnly); cout << "OK !"; // c'est pour vérifier que ça marche une fois ! }
Je ne sais pas si ça parle plus avec ça…
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 #include <QApplication> #include <QTextCodec> #include "Fenetre.h" int main(int argc, char *argv[]) { QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QApplication app(argc, argv); Fenetre fenetre; fenetre.show(); return app.exec(); }
En tout cas j’aimerais bien comprendre et réussir ! Merci d’avance pour votre aide !
Partager