代码之家  ›  专栏  ›  技术社区  ›  Nicolai Lissau

QFileDialog未显示假脱机文件夹

  •  2
  • Nicolai Lissau  · 技术社区  · 11 年前

    我请求用户使用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 回复  |  直到 11 年前
        1
  •  1
  •   Community CDub    8 年前

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

    我希望禁用 WOW64 File System Redirector 就够了,但没用。根据 this answer ,如果您使用 Wow64DisableWow64FsRedirection 禁用进程中所有线程的重定向,但即使是回答问题的人也不建议使用这种方法。

        2
  •  0
  •   Nejat    11 年前

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

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

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