Qt在文件夹之间创建链接

Ric*_*ard 3 c++ qt qprocess qfile qtcore

我必须构建一个小对话框,创建一个文件夹的符号链接.

在Windows中我会使用mklink/D命令.

是否有可能在Qt中创建此类链接?我只看到QFile在文件之间创建链接,并且他们需要以.lnk结尾(http://qt-project.org/doc/qt-4.8/qfile.html#link)另一方面QDir没有提供任何内容.

有什么建议?

最好的问候,理查德

lpa*_*app 5

是否有可能在Qt中创建此类链接?

是的,它是,但仅限于Unix.

不幸的是,QFile不支持Windows,甚至QDir也不支持.在我看来,这对于在Qt Bug跟踪器上提交报告是一个有用的功能.

解决方法是编写如下内容:

#ifdef Q_OS_UNIX
    QFile::link(sourceDir.absolutePath(), destDir.absolutePath());
#elif Q_OS_WIN
    QProcess process;
    process.start("mklink /D");

    // Wait for it to start
    if(!process.waitForStarted())
        return 0;

    bool retval = false;
    QByteArray buffer;
    while ((retval = process.waitForFinished()));
        buffer.append(process.readAll());

    if (!retval) {
        qDebug() << "Process error:" << process.errorString();
        qDebug() << "Output:" << buffer;
        return 1;
    }
#endif
Run Code Online (Sandbox Code Playgroud)