2012-02-04 414 views

回答

5

,你可以用这个方法来选择Windows或MacOS的文件,如果你想选择在Linux上,你可以找到在QtCreator源的方式。

void select(const QString& path){ 
#if defined(Q_OS_WIN) 
    const QString explorer = "explorer"; 
     QStringList param; 
     if (!QFileInfo(path).isDir()) 
      param << QLatin1String("/select,"); 
     param << QDir::toNativeSeparators(path); 
     QProcess::startDetached(explorer, param); 
#elif defined(Q_OS_MAC) 
    QStringList scriptArgs; 
     scriptArgs << QLatin1String("-e") 
        << QString::fromLatin1("tell application \"Finder\" to reveal POSIX file \"%1\"") 
             .arg(path); 
     QProcess::execute(QLatin1String("/usr/bin/osascript"), scriptArgs); 
     scriptArgs.clear(); 
     scriptArgs << QLatin1String("-e") 
        << QLatin1String("tell application \"Finder\" to activate"); 
     QProcess::execute("/usr/bin/osascript", scriptArgs); 
+0

比openUrl的调用要好吗? – krlmlr 2012-02-04 13:34:22

+1

它更好,因为它可以选择文件并且openurl不能 – 2012-02-06 11:31:06

+0

我发现如果文件路径中有逗号,Q_OS_WIN解决方案不起作用。使用cmd,你可以用引号解决文件路径周围的问题,但是这个解决方案在qt中不起作用。任何想法? – louissmr 2014-06-21 11:49:46

0

您是否尝试过使用file:///语法?下面是一个代码库,我的工作采取:

PyQt4.QtGui.QDesktopServices.openUrl(PyQt4.QtCore.QUrl('file:///%s' % dirname)) 
+0

是的,这是如何在文件管理器窗口(如Nemo或Windows资源管理器)中打开目录。但问题是关于在该窗口中选择文件。 – 2016-06-22 09:45:44

相关问题