Qt4: récupérer QLineEdit puis créer dossier??
Résolu/Fermé
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
-
15 mai 2012 à 13:36
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 16 mai 2012 à 13:06
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 16 mai 2012 à 13:06
7 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
15 mai 2012 à 15:54
15 mai 2012 à 15:54
ce que tu cherches à faire c'est QString( "/home/clem/"+ mois).splot();
mais utiliser QProcess avec mkdir, c'est mal, car non portable.
Utilise directement la commande mkdir ou mkpath de la classe QDir :
https://doc.qt.io/archives/qt-4.8/qdir.html
C'est plus portable, plus propre et plus simple.
mais utiliser QProcess avec mkdir, c'est mal, car non portable.
Utilise directement la commande mkdir ou mkpath de la classe QDir :
https://doc.qt.io/archives/qt-4.8/qdir.html
C'est plus portable, plus propre et plus simple.
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
15 mai 2012 à 18:32
15 mai 2012 à 18:32
Merci je vais regarder ca, là j'étais partis pour lancer un bash au clic d'un bouton qui aurait traité un fichier ecrit plus tot par QFile contenant tout le formulaire xD
et c'est pour un petit prog perso qui serait utilisé sur linux ou mac donc la portabilité n'est pas mein soucein
encore Merci ;) ;)
et c'est pour un petit prog perso qui serait utilisé sur linux ou mac donc la portabilité n'est pas mein soucein
encore Merci ;) ;)
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
16 mai 2012 à 09:01
16 mai 2012 à 09:01
la portabilité ce n'est pas que "spatiale" (entre OS) mais aussi temporelle, si mkdir change ton programme ne fonctionnera plus. Qt est une bibliothèque très complète, il est rare de devoir passer par autre chose.
Au début, je programmais un peu comme toi, puis je me suis rendu compte que ça me limitait et ça me compliquait la vie inutilement.
Au début, je programmais un peu comme toi, puis je me suis rendu compte que ça me limitait et ça me compliquait la vie inutilement.
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
16 mai 2012 à 10:40
16 mai 2012 à 10:40
hello!!
je me permet de te relancer pour mon prob avec Qt, quand je place
QString("/home/clem" + mois1).split(); le compilateur me sort une erreur qui me dit invalide operande +.
de plus, j'utilise ca
QFile file("/home/clem/QT/test.txt");
if(file.open(QIODevice::WriteOnly))
{
file.write(mois1->text());
file.write(temps1->text());
file.write(tempMin1->text());
file.write(tempMax1->text());
file.write(precipitation1->text());
file.write(note1->toPlainText());
file.close();
}
mais impossible d'avoir un saut de ligne dans mon fichier.
file.write(mois1->text()) + "\n";
ne fonctionne pas, alors j'ai essayé de le placer un peu partout mais... rien.
mais la je viens de me rendre compte que on prog ne fonctionne meme plus... il me sort une erreur QIODevice alors que ca fonctionnait parfaitement.
Et merci du consei sur la portabilité (je débute ;) )
je me permet de te relancer pour mon prob avec Qt, quand je place
QString("/home/clem" + mois1).split(); le compilateur me sort une erreur qui me dit invalide operande +.
de plus, j'utilise ca
QFile file("/home/clem/QT/test.txt");
if(file.open(QIODevice::WriteOnly))
{
file.write(mois1->text());
file.write(temps1->text());
file.write(tempMin1->text());
file.write(tempMax1->text());
file.write(precipitation1->text());
file.write(note1->toPlainText());
file.close();
}
mais impossible d'avoir un saut de ligne dans mon fichier.
file.write(mois1->text()) + "\n";
ne fonctionne pas, alors j'ai essayé de le placer un peu partout mais... rien.
mais la je viens de me rendre compte que on prog ne fonctionne meme plus... il me sort une erreur QIODevice alors que ca fonctionnait parfaitement.
Et merci du consei sur la portabilité (je débute ;) )
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
16 mai 2012 à 11:12
16 mai 2012 à 11:12
Salut.
Oui, en effet, c'est "mois" ou "mois1->text()" qu'il faut lui fournir, sinon en effet l'opérateur plus n'est pas défini.
Tu fais une erreur de parenthèses, pour le retour à la ligne :
file.write(mois1->text() + "\n" );
Oui, en effet, c'est "mois" ou "mois1->text()" qu'il faut lui fournir, sinon en effet l'opérateur plus n'est pas défini.
Tu fais une erreur de parenthèses, pour le retour à la ligne :
file.write(mois1->text() + "\n" );
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
16 mai 2012 à 11:20
16 mai 2012 à 11:20
il me semble avoir déjà testé sous cette forme mais je vais le refaire. par contre là (sans saut a la ligne) mon code ne fonctionne plus...
extrait de msg err:
extrait de msg err:
/fenetrePrincipale.cpp: In member function `void fenetrePrincipale::genFile1()': ../PanteObs4/fenetrePrincipale.cpp:130:33: erreur: no matching function for call to `QFile::write(QString)' ../PanteObs4/fenetrePrincipale.cpp:130:33: note: candidates are: /usr/include/qt4/QtCore/qiodevice.h:124:12: note: qint64 QIODevice::write(const char*, qint64) /usr/include/qt4/QtCore/qiodevice.h:124:12: note: candidate expects 2 arguments, 1 provided
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
16 mai 2012 à 11:54
16 mai 2012 à 11:54
la solution est là : candidates are:
/usr/include/qt4/QtCore/qiodevice.h:124:12: note: qint64 QIODevice::write(const char*, qint64)
test ça :
file.write(_var_->text().ascii() );
J'avoue qu'un des truc pas top en QT c'est l'écriture/lecture des fichiers. Si tu veux, je peux te passer un petit exemple.
/usr/include/qt4/QtCore/qiodevice.h:124:12: note: qint64 QIODevice::write(const char*, qint64)
test ça :
file.write(_var_->text().ascii() );
J'avoue qu'un des truc pas top en QT c'est l'écriture/lecture des fichiers. Si tu veux, je peux te passer un petit exemple.
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
16 mai 2012 à 11:58
16 mai 2012 à 11:58
xD a ok je vois, j'ai fait sauter le .toUTF8 de chaque ligne pour tester le "\n"
et oui je suis preneur d'un petit exemple :)
Merci pour ton aide ... Précieuse :D
et oui je suis preneur d'un petit exemple :)
Merci pour ton aide ... Précieuse :D
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
16 mai 2012 à 12:10
16 mai 2012 à 12:10
QFile fs(QDir::home().absPath()+"/essaiccm.txt"); fs.open(IO_WriteOnly); QTextStream ffs(&fs); ffs<<"texte à ecrire dans le fichier\n"; fs.close();J'avoue que je n'ai jamais compris l'intéret de passer par QTextStream, mais c'est ainsi que c'est fait dans la documentation.
Tu devrais d'ailleur lire au maximum la documentation qui est bien faite et comporte pas mal d'exemples.
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
Modifié par LezardMoo le 16/05/2012 à 12:17
Modifié par LezardMoo le 16/05/2012 à 12:17
au risque de passer pour un gros naz, je ne comprend pas toujours la doc qt que je m'efforce pourtant de lire (par exemple avant de poster mon prob ici j'ai bien chercher pdt 2 jours)
notamment ce qui me pose problème et que je n'ai pas encore saisi c''est pour le passage de variable récupéré de widget comme QLineEdit QTextEdit et tout ca. par exemple, dans ton exemple comment passer ma variable +mois1 dans ffs << "text";
et surtout ffs je epux le declarer plusieurs fois? (là mon but c'est de recup un formulaire
mois
temps
temp. min
temp. max
precipitation
note
notamment ce qui me pose problème et que je n'ai pas encore saisi c''est pour le passage de variable récupéré de widget comme QLineEdit QTextEdit et tout ca. par exemple, dans ton exemple comment passer ma variable +mois1 dans ffs << "text";
et surtout ffs je epux le declarer plusieurs fois? (là mon but c'est de recup un formulaire
mois
temps
temp. min
temp. max
precipitation
note
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
16 mai 2012 à 12:24
16 mai 2012 à 12:24
Je ne comprends pas ton problème (moi non plus je ne comprends pas toujours la doc, mais c'est souvent qu'il me manque un concept).
ffs est un flux, tu l'utilises comme tel. Tout comme cout.
ffs est un flux, tu l'utilises comme tel. Tout comme cout.
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
16 mai 2012 à 12:11
16 mai 2012 à 12:11
maintenant reste a melangé le
file.write(_var_->text().ascii() ); avec le file.write(mois1->text()) + "\n";
pour pouvoir sauter un ligne;
j'ai testé ca file.write(mois1->text() + "\n".toUtf8); ca ne passe pas xD
file.write(_var_->text().ascii() ); avec le file.write(mois1->text()) + "\n";
pour pouvoir sauter un ligne;
j'ai testé ca file.write(mois1->text() + "\n".toUtf8); ca ne passe pas xD
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
Modifié par Char Snipeur le 16/05/2012 à 12:22
Modifié par Char Snipeur le 16/05/2012 à 12:22
avec des parenthèses, ça devrai le faire :
file.write((mois1->text() + "\n").toUtf8());
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
16 mai 2012 à 13:06
16 mai 2012 à 13:06
le boulet!!! bon j'ai encore pleins de chose a apprendre (surtout a bien vérifier la ponctuation.)
Merci les yvelines ;) (jsuis de sartrouville)
Merci les yvelines ;) (jsuis de sartrouville)