当前位置: 首页 > news >正文

QT6(QFileSystemModel和QTreeView)

QT6


QFileSystemModel和QTreeView

  • QFileSystemModel为本机的文件系统提供一个模型,QFileSystemModelt和QTreeView结合使用,可以用目录树的形式显示本机的文件系统,如同Windows的资源管理器一样
  • 使用QFileSystemModel提供的接口函数,我们可以创建目录、删除目录、重命名目录、可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详情情况

QTreeView常用属性和方法

模型相关

属性/方法类型描述
model()QAbstractItemModel*获取视图使用的数据模型
setModel()void设置视图的数据模型
selectionModel()QItemSelectionModel*获取选择模型
setSelectionModel()void设置选择模型

外观与布局

属性/方法类型描述
indentation()int获取缩进宽度
setIndentation()void设置缩进宽度
uniformRowHeights()bool获取是否使用统一行高
setUniformRowHeights()void设置是否使用统一行高
columnWidth()int获取指定列的宽度
setColumnWidth()void设置指定列的宽度
header()QHeaderView*获取表头视图
setHeader()void设置表头视图
wordWrap()bool获取是否自动换行
setWordWrap()void设置是否自动换行

展开/折叠操作

属性/方法类型描述
expandsOnDoubleClick()bool获取是否双击展开项
setExpandsOnDoubleClick()bool设置是否双击展开项
itemsExpandable()bool获取项是否可展开
setItemsExpandable()void设置项是否可展开
rootIsDecorated()bool获取根项是否显示装饰
setRootIsDecorated()void设置根项是否显示装饰
expand()void展开指定索引的项
collapse()void折叠指定索引的项
expandAll()void展开所有项
collapseAll()void折叠所有项
expandRecursively()void递归展开项
isExpanded()bool检查指定索引的项是否展开

选择操作

属性/方法类型描述
setSelectionMode()void设置选择模式
selectionMode()QAbstractItemView::SelectionMode获取选择模式
setSelectionBehavior()void设置选择行为
selectionBehavior()QAbstractItemView::SelectionBehavior获取选择行为
currentIndex()QModelIndex获取当前选中项的索引
setCurrentIndex()void设置当前选中项
selectedIndexes()QModelIndexList获取所有选中项的索引列表
clearSelection()void清除所有选择
selectAll()void选择所有项

编辑功能

属性/方法类型描述
edit()void编辑指定索引的项
setEditTriggers()void设置编辑触发器
editTriggers()EditTriggers获取编辑触发器

排序功能

属性/方法类型描述
sortByColumn()void按指定列排序
setSortingEnabled()void启用或禁用排序
isSortingEnabled()bool检查是否启用排序

视图操作

属性/方法类型描述
indexAt()QModelIndex获取指定位置的模型索引
visualRect()QRect获取指定索引的可视矩形区域
scrollTo()void滚动到指定索引
resizeColumnToContents()void调整列宽以适应内容

动画效果

属性/方法类型描述
animated()bool获取是否启用动画效果
setAnimated()void设置是否启用动画效果

焦点显示

属性/方法类型描述
allColumnsShowFocus()bool获取所有列是否显示焦点
setAllColumnsShowFocus()void设置所有列是否显示焦点

代码测试

#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QFileSystemModel>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建model对象m_model = new QFileSystemModel(this);// 设置model对象ui->tableView->setModel(m_model);ui->tableView->setShowGrid(false);ui->treeView ->setModel(m_model);ui->listView->setModel(m_model);// 初始化m_model->setRootPath(QDir::currentPath());// 设置初始化目录ui->treeView->setRootIndex(m_model->index(QDir::currentPath()));connect(ui->treeView,&QTreeView::clicked,ui->listView,&QListView::setRootIndex);connect(ui->treeView,&QTreeView::clicked,ui->tableView,&QTableView::setRootIndex);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_actionSetRoot_triggered()
{// 设置根目录QString dirStr = QFileDialog::getExistingDirectory(this,"选择目录",QDir::currentPath());if(dirStr.isEmpty()) return;ui->treeView->setRootIndex(m_model->index(dirStr));ui->listView->setRootIndex(m_model->index(dirStr));ui->tableView->setRootIndex(m_model->index(dirStr));}void MainWindow::on_radioButtonShowRootAndFile_clicked()
{m_model->setFilter(QDir::AllDirs|QDir::Files|QDir::NoDotAndDotDot);ui->groupBox_4->setEnabled(true);
}void MainWindow::on_radioButtonOnlyFile_clicked()
{m_model->setFilter(QDir::AllDirs|QDir::NoDotAndDotDot);ui->groupBox_4->setEnabled(false);
}void MainWindow::on_checkBoxFileFilter_clicked(bool checked)
{ui->comboBox->setEnabled(checked);ui->pushButton->setEnabled(checked);m_model->setNameFilterDisables(!checked);}void MainWindow::on_pushButton_clicked()
{QStringList filter = ui->comboBox->currentText().trimmed().split(",",Qt::SkipEmptyParts);m_model->setNameFilters(filter);}void MainWindow::on_treeView_clicked(const QModelIndex &index)
{ui->labelFileName->setText(QString("文件名称:%1").arg(m_model->fileName(index)));ui->labelFileSize->setText(QString("文件大小:%1 %2").arg(m_model->size(index)/1024).arg("KB"));ui->labelPathName->setText(QString("文件路径:%1").arg(m_model->filePath(index)));ui->labelNoedType->setText(QString("节点类型:%1").arg(m_model->type(index)));ui->checkBoxIsCatalog->setChecked(m_model->isDir(index));}

效果展示

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/362476.html

相关文章:

  • 第三方软件测评:第三方组件(如 jQuery、Bootstrap)的 WEB安全测试方法
  • Element Plus 表格表单校验功能详解
  • 封装Element UI中el-table表格为可配置列公用组件
  • ubantu20.04 git clone 无法连接问题与解决方法
  • Hard Disk Sentinel:全面监控硬盘和SSD的健康与性能
  • SQLSERVER基本cmd操作命令
  • 2025含金量高的市场岗位证书有哪些?
  • 4种有效方法将联想手机数据传输到电脑
  • 设计软件启动失败?“找不到vcruntime140.dll,无法继续执行代码” 场景化解决方案来了
  • 【Stream API】高效简化集合处理
  • 智能数据采集实战:从爬取到分析一步到位
  • 【音视频】VP8 与 VP9 技术详解及与 H.264 H.265 的对比
  • FFmpeg命令行音视频工具:高效实现格式转换与批量处理,支持音频提取与精准视频剪辑
  • 【LeetCode牛客数据结构】单链表的应用——环形链表及链表分割问题详解
  • 【音视频】WebRTC-NACK
  • 苹果手机文本转音频,自行制作背诵素材
  • CentOS 创建站点
  • 从零开始学习C#上位机开发学习进阶路线,窥探工业自动化和物联网应用
  • Windows---DWORD与IPVOID
  • milvus-standalone启动失败unhealthy,错误日志context deadline exceeded
  • 2023知识图谱与大模型融合实践研究报告
  • Centos10虚拟机安装Zabbix
  • ELK 统一日志分析系统部署与实践指南(下)
  • cv610单独烧录 ddr失败
  • 一、Scala 基础语法、变量与数据类型
  • CentOS交换区处理
  • 第5节:分布式文件存储
  • Nginx 全攻略:从部署到精通的实战指南(CentOS 环境)
  • CentOS 7/8 单用户模式重置 root 密码完整流程
  • 解析ELK(filebeat+logstash+elasticsearch+kibana)日志系统原理以及k8s集群日志采集过程