cpp
/// 打开目录多选对话框(禁用原生对话框以支持多选)
static QStringList pickMultipleDirectories(QWidget *parent)
{
QFileDialog dialog(parent, QStringLiteral("选择目录(可多选)"), QDir::homePath());
dialog.setFileMode(QFileDialog::Directory);
dialog.setOption(QFileDialog::DontUseNativeDialog, true);
// 通过内部 QTreeView 启用多选
auto *tree = dialog.findChild<QTreeView*>();
if (tree)
tree->setSelectionMode(QAbstractItemView::MultiSelection);
QStringList result;
if (dialog.exec() == QDialog::Accepted)
result = dialog.selectedFiles();
return result;
}
我测试过,在Windows和银河麒麟下都可以正常运行,功能也正确。

..\DataRecord\main.cpp 215 ("D:/Books", "D:/Books/雷达", "D:/Books/心理", "D:/Books/学习书籍")
打印信息:可以看到,结果是正确的。