如何在 Qt treeview 中初始化起始路径?

Posted

技术标签:

【中文标题】如何在 Qt treeview 中初始化起始路径?【英文标题】:How to initialize the starting path in Qt treeview? 【发布时间】:2014-08-01 01:46:05 【问题描述】:

我想将 Qt 树视图中的起始路径初始化为 Linux Ubuntu 上的用户主目录。

我试过这段代码,但它不起作用。

QString sPath = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx";
dirmodel = new QFileSystemModel(this);
dirmodel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
dirmodel->setRootPath(sPath);
ui->treeView->setModel(dirmodel);
我已经测试了 sPath :
    /home/<username> $HOME /home/casper/Music

没有人工作。 =[

如何解决?

感谢您的帮助。

【问题讨论】:

应该可以。你得到什么结果? @this.lau_ - 你指的是哪个 sPath? 1,2 还是 3?我只是得到路径“/” 【参考方案1】:

加载模型后,我认为您需要在树小部件上调用setRootIndex

ui->treeView->setRootIndex(dirmodel->index("/home/casper"));

或者对于任何主目录(也适用于 Windows、OSX 等):

ui->treeView->setRootIndex(dirmodel->index(QDir::homePath()));

【讨论】:

当用户名不是“casper”时,这个方法能用吗?谢谢 @CasperLi,如果你特别想要主目录,你可以使用QDir::homePath()。我已经用一个例子更新了我的答案。

以上是关于如何在 Qt treeview 中初始化起始路径?的主要内容,如果未能解决你的问题,请参考以下文章

C# treeview 获得选中值

请问如何用TreeView控件导航无法让选中的节点高亮

Qt View/Model/Data Paradigm:如何修改数据?

qt treeview过滤

如何在窗体初始化的时候就展开所有TreeView控件的所有节点

关于TreeView在IE中显示问题