c++ - QDesktopServices::openUrl() 无法在 MAC Finder 中打开目录

标签 c++ macos qt

我想让应用程序在 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));

最佳答案

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));

关于c++ - QDesktopServices::openUrl() 无法在 MAC Finder 中打开目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48243245/

相关文章:

c++ - cpp unordered_set 只使用比较器而不是散列

c++ - 查找行尾位置的有效方法

xcode - 何时使用 awakeFromNib 、 initWithWindow 、 windowDidLoad 方法?

linux - M-f、M-b 绑定(bind)在 Mac X11 上不起作用(通过 NX)

python - pyqt dropEvent 不会触发

c++ - 检测迭代器是否是 std::map 的最后一个元素

c++ - 在相应的源文件中使用头文件中的别名

objective-c - 在不同的NSWindow中的NSOpenGLView上绘制不同的形状

c++ - 如何从 std::optional<QByteArray> 中获取 QByteArray 并在没有额外 malloc 的情况下保留 std::nullopt?

c++ - QSortFilterProxyModel filterAcceptsColumn 无法设置新的索引数据