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

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

相关推荐
lqj_本人9 小时前
WinPcap 鸿蒙 PC 适配全记录:从 NPF 原始抓包到 VPN_TUN 与 libpcap 双通路
qt·华为·harmonyos
Quz13 小时前
QML StackView:三种入栈方式(Item、Component 与 URL)
qt
Quz13 小时前
QML StackView:入栈、出栈、替换与批量操作
qt
老赵的博客15 小时前
c++面试之从虚函数表到Rtti一次性讲清楚
c++·qt
颜颜yan_20 小时前
Git Cola 鸿蒙 PC 版适配全记录:从 Qt 桌面工具到 ArkTS 原生应用
git·qt·harmonyos
Lsir10110_21 小时前
从按钮“点不动“讲起——深入理解 Qt 信号槽机制
开发语言·qt·信号处理
lqj_本人21 小时前
WinMerge 鸿蒙 PC 适配全记录:以 Qt 重建桌面外壳,打通文件与文件夹差异闭环
qt·华为·harmonyos
lqj_本人1 天前
Tftpd64 鸿蒙 PC 适配全记录:用 Qt 重建一组可运行的 UDP 网络服务
qt·udp·harmonyos
User_芊芊君子1 天前
RStudio 鸿蒙 PC 适配全记录:以 Qt 原生工作区承载嵌入式 R
qt·r语言·harmonyos