Qt中treeview怎么实现获取item的绝对路径?

在treeview中,怎么才能获取item的绝度路径呢?

之前在练习listview时,可以使用:

QString Item = ui->listView->model()->data(index).toString();

来获取选中项的字符串。在treeview中,这样还是可以获取的,但是treeview和listbiew不同的是,它可以展开也可以这点,这时候,光有字符串就不够用了,我得知道他的层级关系啊,有绝对路径就好了

为此,尝试了添加展开和折叠的槽函数,试图记录每一次展开折叠的信息,结果忽然发现,展开是可以的,因为必须一层一层的展开,但折叠就不一样了,不见得肯定得一层一层的折叠啊,有可能在根目录就直接折叠了,又乱套了。

后来发现,其实根本用不着用展开和折叠的事件,直接在单击事件中,用filesystemmodel就可以获取当前绝度路径。这下就方便了,我每次单击一个条目,都可以获取他的绝对路径。

附上源码:

    // 获取选中条目的绝对路径并显示
    QString curItemRel = ui->treeView->model()->data(index).toString();
    curItem = filesystem->fileInfo(index).absolutePath()+"/"+curItemRel;
    ui->label->setText("展开:"+curItem);

其实重点就一句,在通过model()获得当前数据后,直接调用fileinfo函数,获取绝对路径,然后再加上当前条路就可以了。比方说:当前路径是d:/test,再加上条目为hello.txt,连起来就是

d:test/hello.txt

看一下效果图:

当我单击某个子项的条目时,也可以获取正确的路径:

折叠回来也不会出错:

 这个解决方案我还是比较满意的,之前写了几十行代码,现在几行就搞定了。

完整代码下载:

Qt实现TreeView中获取文件绝度路径-C++文档类资源-CSDN下载

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Intimes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值