You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让QTreeView顶层显示可展开的全部可用驱动器列表?

解决方案:让QTreeView顶层显示所有可用驱动器

你的代码当前只显示C盘,是因为treeView->setRootIndex(model->index(QDir::rootPath()));强制将树的根节点设为了系统根路径(Windows下就是C:\)。要展示所有可用驱动器,只需要调整树视图的根索引设置即可。

修改步骤

  • 删除treeView->setRootIndex(model->index(QDir::rootPath()));这一行,或者将其替换为treeView->setRootIndex(model->index(""));

修改后的完整代码

#include <QApplication>
#include <QTreeView>
#include <QFileSystemModel>

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

    QFileSystemModel *model = new QFileSystemModel;
    model->setRootPath("");
    model->setFilter(QDir::Drives | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::NoSymLinks);

    QTreeView *treeView = new QTreeView;
    treeView->setModel(model);
    // 替换为对应所有驱动器的顶层节点索引
    treeView->setRootIndex(model->index(""));

    for (int i = 1; i < model->columnCount(); ++i) {
        treeView->setColumnHidden(i, true);
    }

    treeView->setColumnWidth(0, 250);
    treeView->setWindowTitle("QFileSystemModel Example");
    treeView->resize(600, 400);

    treeView->show();

    return app.exec();
}

关键说明

  • 当QFileSystemModel设置setRootPath("")时,model->index("")对应的是包含所有可用驱动器的顶层节点,将树视图的根索引设为此节点,就能直接展示所有可展开的驱动器列表。
  • 如果你选择删除根索引设置的代码行,QTreeView会默认使用模型的隐形根节点,而QFileSystemModel的隐形根节点的子节点就是所有可用驱动器,效果完全一致。

内容的提问来源于stack exchange,提问作者Joe J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:00:06