2014-01-09 4 views
3

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

В окнах я использую команду mklink/D.

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

Любые предложения?

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

ответ

3

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

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

Смежные вопросы