QFileDialog:选择目录和文件

QFileDialog: Selecting directories and files

本文关键字:文件 选择 QFileDialog      更新时间:2023-10-16

我正在使用以下代码构建文件名的qstringlist:

QStringList filenames = QFileDialog::getOpenFileNames(this,"",QDir::currentPath() );

如何更改此设置以便也可以选择目录?

我看了看:

dialog.setFileMode(QFileDialog::AnyFile);

但我不知道如何在代码中使用它。

上面注释中链接的这个代码片段解决了我的问题。

QFileDialog* _f_dlg = new QFileDialog(this);
_f_dlg->setFileMode(QFileDialog::Directory);
_f_dlg->setOption(QFileDialog::DontUseNativeDialog, true);
// Try to select multiple files and directories at the same time in QFileDialog
QListView *l = _f_dlg->findChild<QListView*>("listView");
if (l) {
l->setSelectionMode(QAbstractItemView::MultiSelection);
}
QTreeView *t = _f_dlg->findChild<QTreeView*>();
if (t) {
t->setSelectionMode(QAbstractItemView::MultiSelection);
}
int nMode = _f_dlg->exec();
QStringList _fnames = _f_dlg->selectedFiles();

我尝试过,但在我的情况下,结果有点奇怪:我可以选择文件夹和文件的组合,只要第一个选择的项目是文件夹。

因此,当我选择一个文件夹,然后是一个文件,再选择一个文件时,我可以继续点击按钮并检索结果:请参阅下面链接中的屏幕截图。

首先选择文件夹,然后选择文件:OK

但是,当第一个项目是一个文件(后面跟着一个文件夹,或者只是一个文件)时,继续按钮不可用。。。因此,在这个实现中,仅仅选择一个或多个文件似乎对我来说是不可用的,正如在另一个屏幕截图中所看到的:

首先选择文件,然后选择文件夹:无法进行

是否有任何方法可以使用QFileDialog使用相同的代码来进行

  1. 选择一个或多个文件而不选择文件夹
  2. 选择一个或多个文件夹而不选择文件
  3. 选择文件和文件夹的组合,而不考虑选择顺序