【问题标题】:QDesktopServices::openUrl() cannot open directory in MAC FinderQDesktopServices::openUrl() 无法在 MAC Finder 中打开目录
【发布时间】:2018-01-13 18:55:11
【问题描述】:

我希望应用程序在 MAC 的 finder 中打开一个目录,但它不起作用。

它仅适用于 Windows,不适用于 MAC。有什么解决办法吗?

更新:

正如@Mohammad Kanan 建议的那样,使用以下语法:

QDesktopServices::openUrl(QUrl("file:///your_folder", QUrl::TolerantMode));

它正在工作,例如:

QString workingDir = qApp->applicationDirPath();
QString path = QString::fromLatin1("file://%1").arg(workingDir);
QDesktopServices::openUrl(QUrl(path, QUrl::TolerantMode));

附言。您也可以在其上添加相对路径,但请注意字符串中的 .. 和 /:

QString workingDir = qApp->applicationDirPath();
workingDir += "/../../../";
QString path = QString::fromLatin1("file://%1").arg(workingDir);
QDesktopServices::openUrl(QUrl(path, QUrl::TolerantMode));

【问题讨论】:

  • 为什么不使用 QFileDialog
  • QFileDialog 用于选择文件或目录,不是吗?就我而言,我只需要打开一个目录并在上面显示文件。

标签: c++ macos qt


【解决方案1】:

windows 和 MAC 上的正确语法:

打开一个文件:

QDesktopServices::openUrl(QUrl("file:///Users/myname/myfile"));

浏览具有相同语法的文件夹:

QDesktopServices::openUrl(QUrl("file:///Users/myname/"));

注意

如果文件系统位于包含空格的路径上,请使用TolerantMode

QDesktopServices::openUrl(QUrl("file:///C:/Documents and Settings/All Users/Desktop", QUrl::TolerantMode));

【讨论】:

  • 我不知道为什么,我打开文件夹的方式与您的方式完全相同,但它不起作用。 finder 中什么也没有发生。文件夹路径正确。
  • 您在问题中提到的语法不正确,我假设您现在使用我提供的语法。然后,尝试 2 件事 1) 直接通过 finder 打开文件夹,可能存在权限问题 2) 试试这个修改后的语法QDesktopServices::openUrl(QUrl("file:///your_folder", QUrl::TolerantMode));
  • @Vivi,我更新了在所有情况下都可以接受的答案:)
  • 谢谢,我发现了问题......我的路径实际上并不“正确”,我在路径字符串中添加了相关路径,但忘记了 / 之间......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 2022-06-30
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多