FAQ Qt FAQ Qt Creator FAQ PyQt & PySide

FAQ QtConsultez toutes les FAQ

Nombre d'auteurs : 25, nombre de questions : 299, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireModulesQtCoreFichiers et répertoiresOpérations de base

Pour cela il faut utiliser les méthodes suivantes de QFile :

Première méthode
Sélectionnez
// On référence l'objet file au fichier
QFile file("C:/existe.txt");
// Efface le fichier "existe.txt" et renvoie true ou false si l'opération a bien réussi
bool valid = file.remove();
Deuxième méthode
Sélectionnez
// Efface le fichier "existe.txt" et renvoie true ou false si l'opération a bien réussi
bool valid = QFile::remove("C:/existe.txt");
Mis à jour le 7 mai 2012  par François Jaffré

Pour cela il faut utiliser les méthodes suivantes de QFile :

  • bool QFile::exists()const : permet de vérifier si le fichier pointé par l'objet QFile existe.
  • static bool QFile::exists(const QString & fileName) : permet de vérifier si le fichier "fileName" existe.
Première méthode
Sélectionnez
// On référence l'objet file au fichier
QFile file("C:/existe.txt");
// Si valid == true, le fichier existe
bool valid = file.exists();
Deuxième méthode
Sélectionnez
//Si valid == true, le fichier existe
bool valid  = QFile::exists("C:/existe.txt");
Mis à jour le 7 mai 2012  par François Jaffré

Pour cela QFile met à notre disposition les méthodes suivantes :

Remarque : Ces deux méthodes renvoient true si la copie s'est bien passée et renvoie false dans le cas contraire. Si le fichier spécifié "newName" existe déjà, la copie sera annulée et la méthode renverra false.

Utilisation de la première méthode
Sélectionnez
// On référence l'objet file au fichier
QFile file("C:/copie.txt");
// On copie le fichier copie.txt vers copieNext.txt
bool valid = file.copy("C:/copieNext.txt");
Utilisation de la deuxième méthode
Sélectionnez
// On copie le fichier copie.txt vers copieNext.txt
bool valid  = QFile::copy ("C:/copie.txt", "C:/copieNext.txt");
Mis à jour le 7 juillet 2009  par François Jaffré

Qt, à partir de sa version 4.4, permet, avec la classe QDesktopServices, de récupérer les différents chemins des répertoires spéciaux tels que Movies, Pictures, Temp, etc. C'est la méthode statique storageLocation(), qui prend en argument une énumération de type StandardLocation, qui permet d'effectuer cela.
Exemple : on souhaite récupérer le répertoire Pictures de l'utilisateur.

 
Sélectionnez
QString PicturesPath = QDesktopServices::storageLocation(QDesktopServices::PicturesLocation);

La liste de tous les répertoires pouvant être récupérés correspond à l'énumération StandardLocation.

Remarque : si vous utilisez l'option QDesktopServices::DataLocation, il est impératif que vous ayez défini préalablement le nom de l'application et le nom de l'organisation à l'aide des méthodes setApplicationName() et setOrganizationDomain() de la classe QCoreApplication.

Mis à jour le 7 mai 2012  par François Jaffré

Qt permet à l'aide de la classe QFileDialog une utilisation très simple de ces différentes boîtes de dialogue à l'aide de méthodes statiques :

  • QString getOpenFileName() : permet la récupération du chemin d'un fichier existant sélectionné par l'utilisateur ;
  • QStringList getOpenFileNames() : permet la récupération du chemin de plusieurs fichiers existants sélectionnés par l'utilisateur ;
  • QString getSaveFileName () : permet la récupération du chemin d'un fichier non existant dans le but d'être sauvegardé ;
  • QString getExistingDirectory() : permet la récupération d'un répertoire sélectionné par l'utilisateur.

Remarque : toutes ces méthodes fonctionnent sur le même principe.

Exemple
CacherSélectionnez
Mis à jour le 7 juillet 2009  par François Jaffré

Qt fournit, depuis sa version 4.3, la classe QDirIterator, qui permet la navigation entre répertoires. Cette classe possède plusieurs surcharges du constructeur permettant de préciser le type de navigation que l'on souhaite entre les répertoires. La navigation dans les répertoires se fait surtout à l'aide de deux méthodes :

Récupération des fichiers MP3 et AVI d'un répertoire et de ses sous-répertoires
CacherSélectionnez

Note 1 : Si on préfère récupérer une liste de type QFileInfoList au lieu d'une QStringList, il suffit d'utiliser la méthode QDirIterator::fileInfo ().

Note 2 : Si on souhaite lister uniquement les fichiers d'un répertoire et non ceux de ses sous-répertoires, il est préférable d'utiliser la méthode entryInfoList() de la classe QDir.

Mis à jour le 7 juillet 2009  par François Jaffré

Qt fournit la classe QDir pour manipuler les répertoires. Cette classe permet, entre autres, de récupérer le chemin du répertoire courant de l'exécution et de le modifier :

Récupération du répertoire courant
Sélectionnez
QString CurrentDir = QDir::currentPath();
Spécifier le répertoire courant.
Sélectionnez
QString CurrentDir = "C:/Users/Developpez/Downloads";
QDir::setCurrent(CurrentDir);

Remarque : Il est intéressant de préciser que le répertoire courant n'est pas forcement le même que le répertoire où se trouve l'exécutable.

Mis à jour le 7 mai 2012  par François Jaffré

Qt fournit, avec la classe QCoreApplication, des méthodes statiques permettant de récupérer facilement des informations comme le chemin du répertoire de l'exécutable.

On exécute une application depuis C:\Users\developpez\Documents\test.exe.

 
Sélectionnez
// Contient le chemin complet du répertoire de l'exécutable (C:\Users\developpez\Documents)
QString MyAppDirPath =  QCoreApplication::applicationDirPath();

//Contient le chemin complet de l'exécutable (C:\Users\developpez\Documents\test.exe)
QString MyAppPath = QCoreApplication::applicationFilePath ();
Mis à jour le 7 juillet 2009  par François Jaffré

QIODevice est une couche d'abstraction pour tous les périphériques, pour faire simple : cela permet que tous aient au moins des fonctionnalités minimales, des fonctions aux noms identiques...

Diverses classes héritent de QIODevice : la plus connue, QFile, mais aussi QProcess, QAbstractSocket (et donc, QTcpSocket et QUdpSocket), QBuffer...

QIODevice fournit la méthode readAll() pour récupérer le contenu dans un QByteArray.

 
Sélectionnez
QByteArray QIODevice::readAll();

Depuis le QByteArray, il est possible d'obtenir une QString, grâce aux constructeurs fournis. Vous pouvez aussi passer par la méthode data() de QByteArray, qui vous permet de récupérer un char *.

Cependant, le résultat d'une telle opération peut être assez aléatoire : en effet, un QByteArray peut contenir du texte avec n'importe quel encodage. Pour cela, il vaut mieux passer par un QTextStream, qui permet de gérer l'encodage.

On ne peut jamais être sûr de la provenance d'un QByteArray, ni, donc, de la signification des caractères qu'il comporte. Par exemple, un \0 revêt une signification particulière pour QString : aux yeux de QByteArray, il s'agit d'un caractère comme les autres.

 
Sélectionnez
QString::QString ( QByteArray );

QTextStream::QTextStream (QByteArray );
QTextStream::setCodec ( QTextCodec );
Créé le 30 octobre 2009  par Thibaut Cuvelier

Qt fournit la méthode statique QFileInfoList QDir::drives () qui permet de lister tous les lecteurs (C:\, D:\...) disponible sur une machine Windows.

 
Sélectionnez
//On récupère tous les lecteurs disponibles dans une liste de type QFileInfoList
QFileInfoList ListDrives = QDir::drives();

foreach(const QFileInfo& FileInfo,ListDrives)
{
     //Affichage de tous les lecteurs trouvés sur la machine
     qDebug() << FileInfo. filePath();
}

Cette méthode est aussi disponible sous Mac OS X et Linux. Cependant, elle retournera uniquement la racine du système, c'est-à-dire /.

Créé le 30 octobre 2009  par François Jaffré
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 - 2016 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.