我正在使用 QFileDialog 来选择一个目录。我遇到了无法解决的问题。我花了很多时间在谷歌上搜索这个,但想出了 zilch。

我指定了起始目录(比如/home/dhoti/downloads)并且我想禁用该目录上方的导航。例如,不应允许用户访问/home/dhoti 或/tmp 等。我该如何实现?

这是我的代码:

QFileDialog dlg(this, "Select Firmware Version");
dlg.setDirectory("/home/dhoti/downloads");
dlg.setFileMode(QFileDialog::DirectoryOnly);
dlg.setOption(QFileDialog::ReadOnly, true);
dlg.setOption(QFileDialog::HideNameFilterDetails, true);
dlg.setViewMode(QFileDialog::List);
dlg.setAcceptMode(QFileDialog::AcceptOpen);
dlg.exec();
qDebug() << "selected files: " << dlg.selectedFiles();

谢谢你的帮助
多蒂

最佳答案

您可以检测当前目录何时更改,如果超出限制,则将目录设置回限制目录。

您可以通过执行非阻塞对话来实现这一点,并将 QFileDialog::directoryEntered(const QString& directory) 信号连接到您自己的插槽,您可以在其中进行检查。如果检查失败,请通过 QFileDialog::setDirectory(const QString& directory) 将当前目录设置为限制目录。

免责声明 我没有尝试过这个,但如果它不起作用我会感到惊讶。

关于qt - 限制 QFileDialog 中的目录遍历,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12169878/

10-11 16:27