如何从文件路径和文件名获取QFileSystemModel中的QModelIndex
QFileSystemModel中index函数column参数的作用详解
嘿,我来给你把这个参数的作用讲明白~
QFileSystemModel本质是个多列数据模型,默认会展示文件的好几个属性,而index(filepath, column)里的column参数,就是用来指定你要获取目标文件/路径对应模型中哪一列的QModelIndex。
默认列对应的属性
默认情况下,QFileSystemModel的列和对应属性是这样的:
- 列0:文件名/文件夹名(这是最常用的列,和文件的核心操作绑定)
- 列1:文件大小
- 列2:文件类型(比如“文件夹”“文本文件”“PNG图片”这类描述)
- 列3:最后修改时间
实际使用示例
比如你想获取某个文件夹的索引,同时分别拿到它的名称和大小数据,代码可以这么写:
QFileSystemModel *fileModel = new QFileSystemModel; fileModel->setRootPath(QDir::currentPath()); // 获取当前目录下"test_folder"在文件名列的索引 QModelIndex nameIdx = fileModel->index("./test_folder", 0); // 获取同一个文件夹在大小列的索引 QModelIndex sizeIdx = fileModel->index("./test_folder", 1); // 通过索引取出对应列的数据 qDebug() << "文件夹名称:" << fileModel->data(nameIdx).toString(); qDebug() << "文件夹大小:" << fileModel->data(sizeIdx).toString();
额外小提示
如果你只是要做文件的核心操作(比如判断是否是文件夹、获取父节点、展开目录等),用column=0就足够了——因为文件的核心元数据(路径、目录状态等)都是和列0的索引绑定的,其他列更多是用来展示辅助信息的。
内容的提问来源于stack exchange,提问作者maxwell
相关产品推荐
相关产品推荐

