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

时间:2013-04-24 14:20:08

标签: macos qt qt4

我无法使用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的最后一个路径。

2 个答案:

答案 0 :(得分:7)

在小牛队的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
...

答案 1 :(得分:5)

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

此错误已在JIRA中报告为QTBUG-20771QTBUG-28161,最后是QTBUG-35779(它似乎最终完全解决了Qt 5.2.1中的问题)。以下是Gerrit中补丁的链接。