9

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

4

2 回答 2

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

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

QFileDialog fileDialog(this, "Select File");
#if defined(__APPLE__)
fileDialog.selectFile(dir + "/MyFile.txt");
#else
fileDialog.setDirectory(dir);
#endif
...
于 2014-01-13T13:16:16.050 回答
5

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

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

于 2013-04-24T16:32:50.370 回答