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

Tho*_*her 9 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);
Run Code Online (Sandbox Code Playgroud)

这不起作用:

fn=QFileDialog::getOpenFileName(this,"Select File","/Users/myuser/Desktop");
Run Code Online (Sandbox Code Playgroud)

看起来大多数情况下它会打开最后一次调用getOpenFileName的最后一个路径.

小智 7

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

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

另外,对于像我这样实例化文件对话框的人,因为他们需要更多选项,你也可以这样做:

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


Lin*_*lle 5

这是Qt的一个bug据说是固定在Qt的5.0.1和Qt 4.8.4(尽管它似乎在4.8.4被人们仍然重现的(包括我自己)).

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