Qt4: récupérer QLineEdit puis créer dossier??
Résolu
LezardMoo
Messages postés
554
Date d'inscription
Statut
Membre
Dernière intervention
-
LezardMoo Messages postés 554 Date d'inscription Statut Membre Dernière intervention -
LezardMoo Messages postés 554 Date d'inscription Statut Membre Dernière intervention -
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:
et la je crée un dossier:
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
je ne sais pas du tout comment fair... je continue a chercher de mon coté
Merci d'avance a ceux qui pourront m'aiguiller ;) ;)
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
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.
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 ;) ;)
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.
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 ;) )
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
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
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.
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.
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