如何更改当前工作目录?

abu*_*buv 5 c++ macos qt ios qtcore

我正在开发一个程序,该程序将从某个目录中提取文件,并将其复制到Qt的工作目录中,以供我的应用程序读取。现在,我当前的路径是:

/Users/softwareDev/Desktop/User1/build-viewer-Desktop_Qt_5_4_0_clang_64bit-Debug/viewer.app/Conents/MacOS/viewer

为此,我使用了:

qDebug() << QDir::current().path();
Run Code Online (Sandbox Code Playgroud)

并使用以下命令确认此目录:

qDebug() << QCoreApplication::applicationDirPath();
Run Code Online (Sandbox Code Playgroud)

我的问题是,我将如何改变这条道路?

lpa*_*app 6

将其复制到Qt的工作目录

不知道在这种情况下“ Qt”到底是什么意思。如果安装了库,则应将该路径与要处理的文件名关联,而不是将当前工作目录设置为公平。

但是,为什么要完全更改工作目录?尽管您可能想解决一个问题,但您可能会立即引入其他问题。感觉就像是XY问题。我认为您实际上将需要其他解决方案,例如上述解决方案。

如果您仍然坚持更改当前工作目录或出于任何原因,则可以使用此静态方法:

布尔QDir ::?setCurrent(const QString&path)

将应用程序的当前工作目录设置为path。如果目录已成功更改,则返回true;否则,返回false。否则返回false。

因此,您将发出以下内容:

main.cpp

#include <QDir>
#include <QDebug>

int main()
{
    qDebug() << QDir::currentPath();
    if (!QDir::setCurrent(QStringLiteral("/usr/lib")))
        qDebug() << "Could not change the current working directory";
    qDebug() << QDir::currentPath();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

main.pro

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp
Run Code Online (Sandbox Code Playgroud)

生成并运行

qmake && make && ./main
Run Code Online (Sandbox Code Playgroud)

输出量

"/tmp/stackoverflow/change-cwd"
"/usr/lib"
Run Code Online (Sandbox Code Playgroud)