Qt 打开目录多选对话框

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/学习书籍")

打印信息:可以看到,结果是正确的。

相关推荐
LaoWaiHang8 小时前
关于Qt中鼠标左键事件被子控件截留的处理
qt
初阳78513 小时前
【基于Qt5仿音乐播放器(一)】——项目准备
qt·1024程序员节
kaixin_learn_qt_ing16 小时前
Qt开发工程师
qt
ShineWinsu1 天前
对于Qt:信号与槽的解析
c++·qt·gui·lambda·信号·信号与槽·槽函数
努力实干2 天前
Qt/C++ 模块化设计与工程组织
开发语言·c++·qt
Lhan.zzZ2 天前
Qt:动态库模块框架设计
开发语言·c++·qt
qq_401700413 天前
TCP 长连接、心跳包与断线自动重连设计:工业级通信的“不死鸟”架构
网络·qt·tcp/ip
dyxal3 天前
A2A 协议 v1.0 完全指南:方法名、Agent Card、三种绑定与 FastAPI 实战
开发语言·qt·fastapi
金色熊族4 天前
在Qt中使用asan检测内存泄漏(一)
linux·qt·asan
前行中的小猪4 天前
Qt 5 踩坑实录:多显示器跨屏拖拽导致窗口异常放大与 setGeometry 报错的深度解析与根治
qt·多显示器·高分辨率·多屏幕