如何指定QFileDialog :: getExistingDirectory()方法?

时间:2012-03-08 13:27:36

标签: c++ qt directory qfiledialog

使用方法/命令:

OpenCreateDirectory() 
{  
    QString Directory = QFileDialog::getExistingDirectory(this,
                        tr("Choose Or Create Directory"),
                        "/home",
                        QFileDialog::DontResolveSymlinks);
}

我可以创建一个新目录或选择一个现有目录。有没有办法禁用创建新目录的可能性?另外,有没有办法禁用选择现有目录的可能性?

更确切地说:当我使用上面的方法时,会弹出一个窗口,我可以在其中创建新目录或打开现有目录。我想要做的是限制方法,这样我就可以创建一个新的目录,而不能只打开一个现有的目录,或者在另一种情况下限制方法,这样我就可以打开一个现有的目录而不能创建一个新目录。

2 个答案:

答案 0 :(得分:3)

是的,您可以在创建QFileDialog::ReadOnly时添加选项QFileDialog。 所以创建它:

QString Directory = QFileDialog::getExistingDirectory(this, tr("Choose Or Create Directory"),
                                                         "/home",
                                                           QFileDialog::DontResolveSymlinks | QFileDialog::ReadOnly);

文件对话框的“创建目录”按钮仍然存在,但您无法创建目录。我在Ubuntu上成功使用了这个功能。

答案 1 :(得分:3)

您可以使用以下选项阻止创建新目录:

QFileDialog::DontUseNativeDialog | QFileDialog::ReadOnly 
| QFileDialog::ShowDirsOnly

如果使用本机对话框,则选项ReadOnly没有任何影响,至少在Windows上如此。

<小时/> 并且,为了禁用现有目录的选择,您不能。
但是您可以将要创建的目录的名称添加为单独的选项,或者检查所选目录是否为空。