Qt создать ссылку между папками

Я должен построить небольшой диалог, который создает символическую ссылку на папку.

В Windows я бы использовал команду mklink /D.

Есть ли возможность создавать такие ссылки в Qt? Я видел только, как QFile создает ссылки между файлами, и что они должны заканчиваться на.lnk ( http://qt-project.org/doc/qt-4.8/qfile.html) QDir, с другой стороны, ничего не предоставляет,

Какие-либо предложения?

С наилучшими пожеланиями, Ричард

2 ответа

Решение

Есть ли возможность создавать такие ссылки в 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

Просто проверил документацию еще раз. Нет ничего, кроме QFile::link(), который создает ярлык для Winddows. Итак, вам нужно выполнить команду mklink с QProcess:: execute ().

Другие вопросы по тегам