我有一个QFileDialog对象,我需要用户选择目录

QFileDialog dlg(this, tr("Select directory"));
dlg.setDirectory(currentDir);
dlg.setFileMode(QFileDialog::Directory);
dlg.setOptions(QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly);

我的文件夹结构例如
<root>
  <dir1>
  <dir2>

currentDir<root>/dir1时,我希望对话框指向<root>目录,并在对话框中选择dir1(不仅以文本形式,而且还类似于单击它时的形式)

那有可能吗?

/编辑:
我试过了
dlg.setDirectory("<root>");
dlg.selectFile("dir1");

导致对话框设置正确的目录并填充filename行编辑,但未在文件列表中选择它(但是在具有许多相似的目录名时,确实需要这样做)。

干杯

最佳答案

selectFile()应该可以解决问题:

QFileDialog dlg(this, tr("Select directory"));

if(currentDir == "<root>/dir1") {
    dlg.selectFile(currentDir);
}
else {
    dlg.setDirectory(currentDir);
}

dlg.setFileMode(QFileDialog::Directory);
dlg.setOptions(QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly);

10-07 21:44