2

我要求用户使用 QFileDialog 选择一个文件夹:

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

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

我曾尝试设置标志QFileDialog::HideNameFilterDetails以查看隐藏文件,但这并不能解决问题。

这个问题有解决方案吗?

C:/Windows/System 32/spool 在 QFileDialog 中不存在

在此处输入图像描述

4

2 回答 2

1

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

我希望禁用WOW64 文件系统重定向器就足够了,但这并没有帮助。根据这个答案,如果您使用Wow64DisableWow64FsRedirection禁用进程中所有线程的重定向,它可能会起作用,但即使回答问题的人也不推荐这种方法。

于 2014-03-29T02:41:46.287 回答
0

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

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

QFileDialog fd;
fd.setFilter(QDir::Hidden);
fd.setFileMode(QFileDialog::Directory);
fd.exec();
QString directory = fd.directory().path();
于 2014-03-28T12:48:14.717 回答