Qt在文件夹之间创建链接

时间:2014-01-09 03:18:57

标签: c++ qt qprocess qtcore qfile

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

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

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

有什么建议吗?

祝你好运, 理查德

2 个答案:

答案 0 :(得分:5)

  

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

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

不幸的是,QFile不支持Windows,甚至QDir也不支持。在我看来,这是一个有用的功能,可以在Qt Bug tracker上提交报告。

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

#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

答案 1 :(得分:1)

再次查看文档。除了QFile::link()之外,什么都可以在Winddows上创建一个快捷方式。因此,您需要使用mklink执行QProcess::execute()命令。