QFileDialog:选择目录和文件

QFileDialog: Selecting directories and files

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

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

如何更改此设置以便我也可以 select 个目录?

我看过:

      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();

我试过了,但我的结果有点奇怪:我可以 select 文件夹和文件的组合,只要第一个 selected 项目是文件夹。

因此,当我 select 一个文件夹、一个文件和一个文件夹时,我可以继续单击按钮并检索结果:请参见下面 link 中的屏幕截图。

First folder selected, then file: OK

但是,当第一项是文件(后面是文件夹,或者只是一个文件)时,继续按钮不可用...所以只 select 一个或多个文件是不可用的在这个实现中似乎对我可用,如另一个屏幕截图所示:

First file selected, then folder: not able to proceed

有没有什么方法可以使用与 QFileDialog 相同的代码,让您可以

  1. select 一个或多个没有 selecting 文件夹的文件
  2. select正在处理一个或多个文件夹而不select正在处理文件
  3. select不管select离子顺序如何组合文件和文件夹