QFileDialog - 如何指定主目录

5

我尝试了以下方法来打开一个文件对话框,应该显示用户的主目录:

QString fileName = QFileDialog::getOpenFileName(this,
                   tr("Select database"), QDir::homePath(), 
                   tr("Database Files (*.db *.sqlite)"));

问题在于QFileDialog总是从应用程序启动的目录开始。你有什么想法我做错了什么吗?
顺便说一句:我在Mac OS X上使用Qt 5。
2个回答

8
在Mac OSX中,QDir::homePath()返回HOME环境变量的内容。因此,如果该变量为空,则返回一个空字符串。
请确保在Qt Creator的项目设置中,未选中“清除系统环境”选项(位于构建环境下)。当您选中此框时,Qt会基本上覆盖程序的每个环境变量的值,因此它会看起来是空的。

3

可以像之前建议的那样使用QDir::homePath(),或考虑使用Qt5的QStandardPaths类。


OP已经在使用homePath()了。至于QStandardPaths,看起来它仍然只是在查询主目录时调用了QDir::homePath():http://qt.gitorious.org/qt/qtbase/blobs/stable/src/corelib/io/qstandardpaths_mac.cpp#line161 - jdi
我正在使用QDir:homePath,但是QFileDialog似乎忽略它。即使是硬编码的值也被忽略了。 - rogergl
听起来像是个 bug,因为在 Linux 上的表现符合预期。@rogergl 你看到这个了吗?它讲的是 Daniel Castro 所做的同样的解决方案。 - Oleg Shparber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接