我无法使用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的最后一个路径。
答案 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-20771,QTBUG-28161,最后是QTBUG-35779(它似乎最终完全解决了Qt 5.2.1中的问题)。以下是Gerrit中补丁的链接。