3

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

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

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

有什么建议么?

最好的问候,理查德

4

2 回答 2

5

有没有可能在 Qt 中创建这样的链接?

是的,它是,但仅在 Unix 上。

不幸的是,Windows 上的 QFile 不支持这一点,甚至 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
于 2014-01-09T07:19:06.903 回答
1

刚刚又检查了一次文档。除了QFile::link()之外,没有什么可以在 Windows 上创建快捷方式。因此,您需要使用QProcess::execute()执行mklink命令。

于 2014-01-09T03:37:00.947 回答