10 votes

Comment déterminer le répertoire du fichier exécutable en utilisant Qt ?

Je dois ouvrir un fichier Config. L'emplacement du fichier de configuration est le répertoire dans lequel se trouve le fichier exe. Comment puis-je obtenir cet emplacement ?

J'ai essayé d'utiliser QDir, mais mon code actuel renvoie une erreur lorsque le fichier n'est pas ouvert.

QString cfg_name = QDir::currentPath() + "config.cfg";
QFile File(cfg_name);
if (File.open(QIODevice::ReadOnly))
{
    QTextStream in(&File);
    int elementId;
    while (!in.atEnd())
    {
        QString line = in.readLine();
        filename[elementId] = line;
        elementId++;
    }
}
else
{
    QMessageBox msgBox;
    msgBox.setText("Can't open configuration file!");
    msgBox.exec();
}
File.close();

37voto

jotik Points 4287

Utilisation QCoreApplication::applicationDirPath() au lieu de QDir::currentPath() .

QCoreApplication::applicationDirPath() renvoie un QString avec le chemin du répertoire qui contient l'exécutable de l'application, tandis que QDir::currentPath() renvoie un QString avec le chemin absolu du répertoire courant de l'application.

Le "répertoire courant" n'est généralement pas l'endroit où se trouve le fichier exécutable, mais l'endroit à partir duquel il a été exécuté. Le répertoire courant peut également être modifié pendant la durée de vie du processus d'application et est utilisé pour résoudre les chemins relatifs pendant l'exécution.

Donc dans votre code :

QString cfg_name = QDir::currentPath() + "/config.cfg";
QFile File(cfg_name);

devrait ouvrir le même fichier que

QFile File("config.cfg");

Mais vous voulez probablement juste

QFile File(QCoreApplication::applicationDirPath() + "/config.cfg");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X