我必须构建一个小对话框来创建指向文件夹的符号链接。
在 Windows 中,我会使用 mklink /D 命令。
有没有可能在 Qt 中创建这样的链接?我只看到 QFile 在文件之间创建链接,并且它们需要以 .lnk (http://qt-project.org/doc/qt-4.8/qfile.html#link)结尾 QDir 另一方面不提供任何东西.
有什么建议么?
最好的问候,理查德
有没有可能在 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
刚刚又检查了一次文档。除了QFile::link()之外,没有什么可以在 Windows 上创建快捷方式。因此,您需要使用QProcess::execute()执行mklink命令。