繁体   English   中英

QFileDialog::getOpenFileName 不会在 Mac OS 10.8 Mountain Lion 上设置初始目录

[英]QFileDialog::getOpenFileName doesn't set the initial directory on Mac OS 10.8 Mountain Lion

我无法使用 Qt 4.8 使用 QFileDialog 更改当前目录。 相同的代码在 Windows 和 Mac OS 10.6 Snow Leopard 上运行良好。 如果我不使用本机 Mac OS X 对话框,它也可以正常工作。

这有效:

fn=QFileDialog::getOpenFileName(this,"Select File","/Users/myuser/Desktop",QString(),0,QFileDialog::DontUseNativeDialog);

这不起作用:

fn=QFileDialog::getOpenFileName(this,"Select File","/Users/myuser/Desktop");

看起来如果大多数时候它打开最后一次调用 getOpenFileName 的最后一个路径。

在 Mavericks 上使用 Qt5.2.0 遇到了同样的问题......我找到了一个解决方法:将一个虚拟文件名附加到您要选择的目录中。 但是,请确保不要在 Windows 上执行此操作,因为用户会看到它。

QString dir = "/Users/myuser/Desktop";
#if defined(__APPLE__)
dir += "/MyFile.txt";
#endif
fn = QFileDialog::getOpenFileName(this, "Select File", dir);

此外,对于像我这样实例化文件对话框的人,因为他们需要更多选项,您还可以执行以下操作:

QFileDialog fileDialog(this, "Select File");
#if defined(__APPLE__)
fileDialog.selectFile(dir + "/MyFile.txt");
#else
fileDialog.setDirectory(dir);
#endif
...

这是 Qt 中的一个错误,据报道已在 Qt 5.0.1 和 Qt 4.8.4 中修复(尽管人们(包括我自己)似乎仍然可以在 4.8.4 中重现它)。

这个错误在 JIRA 中被报告为QTBUG-20771QTBUG-28161和最后的QTBUG-35779 (这似乎最终完全解决了 Qt 5.2.1 中的问题)。 这是Gerrit 中补丁的链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM