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
Bonjour tout le monde !!!

alors voila. je cherche a récupérer la valeur entré dans un QLineEdit, pour ensuite créer un dossier portant le nom de cette valeur.

donc je récupère mon QLineEdit:

QString mois=mois1->text();


et la je crée un dossier:

QObject* parent = new QObject();
    QString program = "mkdir";
    QStringList arguments;
    arguments << "/home/clem/+ mois";
    QProcess *mkdirProcess = new QProcess(parent);
    mkdirProcess->start(program, arguments);


Donc voila, à la ligne arguments, j'essaie d'appeler la variable contenant le QLineEdit pour le nom du dossier mais ca ne fonctionne pas.

j'ai tenté ca aussi
arguments << "/home/clem/"+ mois;
mais vous vous doutez bien qu'il n'a pas aimé.

je ne sais pas du tout comment fair... je continue a chercher de mon coté

Merci d'avance a ceux qui pourront m'aiguiller ;) ;)



7 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
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.
0
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
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 ;) ;)
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
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.
0
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
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 ;) )
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
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" );
0

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
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:

/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
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
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.
0
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
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
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
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.
0
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
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
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
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.
0
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
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
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
Modifié par Char Snipeur le 16/05/2012 à 12:22
avec des parenthèses, ça devrai le faire :
file.write((mois1->text() + "\n").toUtf8());
0
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
le boulet!!! bon j'ai encore pleins de chose a apprendre (surtout a bien vérifier la ponctuation.)

Merci les yvelines ;) (jsuis de sartrouville)
0