QFiledialog返回错误的目录

我正在使用的片段看起来像这样
QDir lastDir;
QFileDialog dial(this);

dial.getOpenFileName(this,
                     tr("Open File"),
                     QString("/home"),
                     tr("Raw Images (*.nef *.NEF *.dng *.DNG)"));

lastDir = dial.directory();
qDebug() << lastDir;
无论我最终进入哪个目录,输出都是完全错误的。但是,错误的目录始终是相同的。 AFAICT我在这里做错了什么。这里发生了什么?干杯     
已邀请:
getOpenFileName()
是一个静态函数,它立即打开一个“文件选择器”对话框,并在用户完成对话后返回“用户选择的现有文件”。你这样使用它(注意使用
::
和类名
QFileDialog
而不是对象名称):
QString fileName = QFileDialog::getOpenFileName(this,
                 tr("Open File"),
                 QString("/home"),
                 tr("Raw Images (*.nef *.NEF *.dng *.DNG)"));
directory()
是非静态的,并返回“当前正在对话框中显示的目录”。在对话框仍处于打开状态时调用此函数,它适用于静态调用未涵盖的用例。 这里发生的是你已经实例化了一个对象,在它上面称为静态函数(它不会影响它的状态),然后调用
directory()
,它只反映对象的原始状态,这可能是工作目录。相反,您需要将
getOpenFileName()
调用的返回值存储在变量中,如上所示。 如果您想要让用户只选择一个目录,您可以考虑使用
getExistingDirectory()
。或者,如果要从文件名中提取目录,则
QDir
类有一些对此有用的函数。     

要回复问题请先登录注册