В настоящее время я пытаюсь создать новый каталог и создать новый файл внутри этого каталога. Однако QDir распознает, что этот файл существует, однако, когда я пытаюсь перейти в мой новый каталог, currentPath возвращает одно и то же значение до и после QDir().cd(dirName)
QDir().cdUp();
if(!QDir(dirName).exists())
QDir().mkdir(dirName);
qDebug() << QDir().currentPath(); // returns a path up from exe dir
if(QDir().cd(dirName))
qDebug() << QDir().currentPath(); //returns the same path as above
На самом деле не уверен, почему это не работает, я довольно новичок в программировании, и мне было интересно, почему это так.
QDir().cd(dirName)
Каждый раз, когда вы выполняете QDir()
вы создаете новый экземпляр объекта, затем выполняете операцию над ним (т.е. .cd(dirName)
) и, наконец, этот объект выходит из области видимости и уничтожается; тем самым теряя все ваши изменения.
Вместо этого вы должны создать один экземпляр и выполнить все операции над ним.
QDir dir;
dir.cd(dirName);
dir.path();
Конструктор QDir()
создает QDir
объект, указывающий на рабочий каталог программы. QDir()::cd()
изменения, которые QDir
каталог объекта, однако он не меняет каталог программы. Если вы действительно хотите изменить текущий каталог приложения, см. QDir()::setCurrent(const QString & path)
Этот текущий каталог приложения используется как относительный путь к файлам. Таким образом, чтобы создать файл в новом каталоге, вы можете указать полный путь к файлу или использовать относительный путь как:
QDir::setCurrent(new_base_path);
QFile("some_relative_file_name");
...