QFileDialog没有显示假脱机文件夹

时间:2014-03-28 11:54:23

标签: c++ qt qfiledialog

我要求用户选择QFileDialog的文件夹:

QString directory = QFileDialog::getExistingDirectory(this,"Caption","",
                    QFileDialog::ShowDirsOnly);

我希望用户能够选择所有文件夹,但是QFileDialog无法找到C:/ Windows / System32 / spool /,我怀疑可能还有其他文件夹。

我已尝试设置标记QFileDialog::HideNameFilterDetails以查看隐藏文件,但这不起作用。

这个问题有解决方法吗?

C:/Windows/System 32/spool does not exist in QFileDialog

enter image description here

2 个答案:

答案 0 :(得分:1)

当您在64位Windows上运行32位应用程序时,这似乎是一个问题。如果使用本机x64编译器编译应用程序,则应该能够看到假脱机文件夹。最糟糕的情况是,您可以编写一个简单的64位本机应用程序来显示文件夹浏览器并运行32位应用程序并与64位应用程序通信以获得结果。

我希望禁用WOW64 File System Redirector就足够了,但它没有帮助。根据{{​​3}},如果您使用Wow64DisableWow64FsRedirection禁用流程中所有线程的重定向,它可能会起作用,但即使是回答问题的人也不建议使用此方法。

答案 1 :(得分:0)

您无法使用该静态功能查看所有文件夹。 QFileDialog在幕后进行了一些额外的过滤,并且使用静态函数getExistingDirectory无法以任何明显的方式关闭此过滤。

您可以通过以下方式查看所有文件夹,包括隐藏的文件夹:

QFileDialog fd;
fd.setFilter(QDir::Hidden);
fd.setFileMode(QFileDialog::Directory);
fd.exec();
QString directory = fd.directory().path();