Qt学习:项视图类之QDirModel和QTreeView

QT入门Item Views之QTreeView qt控件 阅读详情

    QDirModel类封装了计算机的文件系统并且可以显示(或者隐藏)不同的文件属性。可以为这个模型应用过滤器,这样就可以根据自己的需要显示不同类型的文件系统条目,并且用不同的方式对这些条目进行排序。

 

 

 

    我们先从构造函数开始:

DirectoryViewer::DirectoryViewer(QWidget *parent)
    : QDialog(parent)
{
    model = new QDirModel;
    model->setReadOnly(false);
    model->setSorting(QDir::DirsFirst | QDir::IgnoreCase | QDir::Name);

    treeView = new QTreeView;
    treeView->setModel(model);
    treeView->header()->setStretchLastSection(true);
    treeView->header()->setSortIndicator(0, Qt::AscendingOrder);
    treeView->header()->setSortIndicatorShown(true);
    treeView->header()->setClickable(true);

    QModelIndex index = model->index(QDir::currentPath());
    treeView->expand(index);
    treeView->scrollTo(index);
    treeView->resizeColumnToContents(0);

    buttonBox = new QDialogButtonBox(Qt::Horizontal);
    QPushButton *mkdirButton = buttonBox->addButton(
            tr("&Create Directory..."), QDialogButtonBox::ActionRole);
    QPushButton *removeButton = buttonBox->addButton(tr("&Remove"),
            QDialogButtonBox::ActionRole);
    buttonBox->addButton(tr("&Quit"), QDialogButtonBox::AcceptRole);

    connect(mkdirButton, SIGNAL(clicked()), this, SLOT(createDirectory()));
    connect(removeButton, SIGNAL(clicked()), this, SLOT(remove()));
    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addWidget(treeView);
    mainLayout->addWidget(buttonBox);
    setLayout(mainLayout);

    setWindowTitle(tr("QDieModel"));
}
    构造函数中,首先我们创建了QDirModel的一个对象,并且设置ReadOnly为false,也就是说我们可以对其进行修改。而下一个setSorting()函数是对其进行排序,排序的依据也很清楚:文件夹优先(QDir::DirsFirst),忽略大小写(QDir::IgnoreCase),而且是根据名字排序(QDir::Name)。更多的规则组合可以参见 API 文档了。
 
    然后我们创建一个QTreeView实例,并且把model设置为刚刚的QDirModel实例。然后我们开始设置QTreeView的相关属性。首先把stretchLastSection设置为true。如果把这个属性设置为true,就是说,当QTreeView的宽度大于所有列宽之和时,最后一列的宽度自动扩展以充满最后的边界;否则就让最后一列的宽度保持原始大小。第二个setSortIndicator()函数是设置哪一列进行排序。由于我们前面设置了model是按照名字排序,所以我们这个传递的第一个参数是0,也就是第1列。setSortIndicatorShown()函数设置显示列头上面的排序小箭头。setClickable(true)则允许鼠标点击列头。这样,我们的QTreeView就设置完毕了。最后,我们通过QDir::currentPath()获取当前exe文件运行时路径,并把这个路径当成程序启动时显示的路径。expand()函数即展开这一路径;scrollTo()函数是把视图的视口滚动到这个路径的位置;resizeColumnToContents()是要求把列头适应内容的宽度,也就是不产生...符号。这样,我们就通过一系列的参数设置好了QTreeView,让它能够为我们展示目录结构。
void DirectoryViewer::createDirectory()
{
    QModelIndex index = treeView->currentIndex();
    if (!index.isValid())
        return;

    QString dirName = QInputDialog::getText(this, tr("mkdir"), tr("Directory Name:"));
    if ( !model->mkdir(index, dirName).isValid() ) {
        QMessageBox::information(this, tr("mkidr"),
                                 tr("Failed to create the directory"));
    }
}

    createDirectory()私有槽调用mkdir()函数来在index处创建一个目录。

void DirectoryViewer::remove()
{
    QModelIndex index = treeView->currentIndex();
    if (!index.isValid())
        return;

    bool ok;
    if ( model->fileInfo(index).isDir() ) {
        ok = model->rmdir(index);
    } else {
        ok = model->remove(index);
    }
    if (!ok) {
        QMessageBox::information(this, tr("Remove"),
                                 tr("Failed to Remove %1").arg(model->fileName(index)));
    }
}


    remove()私有槽删除当前项对应的文件或者目录。

 

 

 

Qt使用QTreeView树视图显示指定路径下的文件信息 【代码】Qt使用QTreeView树视图显示指定路径下的文件信息。 阅读详情

相关推荐

【QT】QFileSystemModel类的应用介绍

本文是QFileSystemModel类的应用介绍,QFileSystemModel提供了一个可用于访问本机文件系统的数据模型。QFileSystemModel和视图组件QTreeView结合使用,可以用目录树的形式显示本机上的文件系统,如同Widnows的资源管理器一样。使用QFileSystemModeI提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。

u011671745的博客 1588

QT 用QTreeView 显示图片文件的缩略图

鄙人尝试着用QTreeView实现了一下缩略图的功能。用QTreeView 实现图片文件缩略图功能与QTreeWidget有些不同,不是在view里面动手脚,而是在FileSystemModel中通过 QFileIconProvider改变文件的图标。 这时需要通过重写QFileIconProvider 类中的 函数: QIcon QFileIconProvider::icon(const Q

没有风的天空 5317

【实战指南】利用CAN适配器高效调试CAN总线通信

本文提供了一份利用CAN适配器高效调试CAN总线通信的实战指南。文章从硬件连接、终端电阻配置、软件参数设置等基础环节入手,详细解析了CAN适配器作为关键调试工具的工作原理与使用方法,并针对常见的通信故障提供了系统化的问题排查思路,帮助工程师快速打通通信链路,提升调试效率。

weixin_28285943的博客 416

QTreeView:scrollTo

QTree跳转到指定项,并显示出来。

Sparrow_du的博客 423

Vanna 2.0:基于LLM的智能文本到SQL框架,实现企业级数据查询与权限控制

文本到SQL技术是自然语言处理与数据库交互的重要桥梁,它允许用户使用日常语言直接查询数据库,无需编写复杂的SQL语句。其核心原理是利用大语言模型理解用户意图,并结合检索增强生成技术,将自然语言问题转换为准确的结构化查询语言。这项技术的价值在于大幅降低了数据访问门槛,提升了业务人员的数据自助分析能力,并能在金融分析、销售报表、运营监控等场景中实现实时数据洞察。Vanna 2.0作为一个开源框架,通过引入用户感知的智能体架构和行级安全策略,解决了企业级应用中的多租户数据隔离与权限控制等关键问题,使得自然语言数据

weixin_42629522的博客 546

N5105核显直通PVE:从黑屏到HDMI输出的完整指南

PCI直通能让虚拟机独占物理设备,但核显直通远没有独显那么轻松。Intel核显与CPU、显示输出链路的强耦合使UEFI引导、GOP驱动、驱动签名等环节都成了黑屏陷阱。在PVE虚拟化环境中,通过IOMMU开启、vfio-pci绑定、OVMF固件和Q35机型配合,可以绕过KVM检测,让Windows虚拟机正确驱动核显,从HDMI口输出画面,并解锁Intel Quick Sync硬解能力。这种方案尤其适合N5105等低功耗迷你主机,可作为客厅HTPC、本地视频硬解或依赖硬件加速的轻量工作台。本文基于N5105平台

weixin_31082403的博客 375

QFileSystemModel类和QDirModel类

在Qt6以上的版本中移除了QDirModel类,因此想要在Qt6中实现QDirModel类似的功能可以采用QFileSystemModel类来实现,QFileSystemModel和QDirModel在用法上有一些区别,主要是在数据模型的管理和功能上有所不同。QFileSystemModel:提供了更多的文件系统操作功能,包括文件的复制、移动和删除,以及文件的重命名等。QFileSystemModel:它是基于延迟加载的模型,只在需要时才会加载文件系统内容,因此对大型文件系统的处理更加高效。

m0_65132134的博客 656

OpenClaw安装方式那么多,但建议大家还是用云厂商吧

OpenCloud的安装方式多样,包括One-liner、npm、pnpm和Hackable等。One-liner提供高效的单行命令安装;npm和pnpm作为Node.js包管理工具,分别提供常规和高性能的安装选项;Hackable则支持定制化安装。不同系统(macOS、Windows)和终端(PowerShell、CMD)的操作步骤各有特点,用户需根据自身技术背景选择合适的安装方式。官方推荐使用闲置计算资源或云部署方案以获得更佳体验。

涛涛讲AI 1401

《QTreeView+QDirModel实现显示目录结构》:系列教程之二

1、QDirModel的使用 Qt上可以使用QFileSystemModel和QDirModel都可以获得文件系统目录结构数据。这里以QDirModel为例进行说明。 QDirModel类为本地文件系统提供了一个数据模型,显示我们采用QTreeView。 按照系列教程(一)中对原理的讲解,只要具备model和view,那么就可以进行显示了。 核心代码就三句话: model = new ...

百里杨的博客 7211

Colab虚拟环境配置全攻略:从安装到实战应用

本文详细介绍了在Google Colab中配置Python虚拟环境的完整流程与实战技巧。通过安装Anaconda、创建独立环境、解决常见错误及结合深度学习项目应用,帮助用户有效管理依赖、避免冲突,并利用环境持久化策略提升在Colab中的开发效率与项目可复现性。

weixin_29204121的博客 341

49、Linux内核内存管理:MGLRU、DAMON与OOM杀手详解

本文详细解析了Linux内核内存管理中的三大核心机制:MGLRU(多代LRU)页面追踪与回收机制、DAMON数据访问监控工具及其在内存优化中的应用,以及OOM(内存不足)杀手的工作原理和触发方式。同时,文章还介绍了VM overcommit_memory策略的设置及其对内存分配的影响,帮助开发者和系统管理员更好地理解Linux内存管理机制,从而优化系统性能和稳定性。

dropout6artist的博客 108

QT做一个硬盘目录视图QTreeView,QDirModel

  首先,我们来看一个很有用的model:QDirModel。这个model允许我们在view中显示操作系统的目录结构, 当然我们肯定要用到QTreeView。这次让我们先来看看运行结果: 首先,我们要建立一个QT的项目,然后呢点击项目属性,添加新文件,选择c++ Class,点击Choose输入一个类名, 接着在.h文件里面添加要用到的类 #ifn

cqltbe131421的博客 4046

示波器核心参数选型指南:带宽、采样率与嵌入式调试实战

示波器是电子工程师进行信号观测与故障诊断的基础仪器,其性能由带宽、采样率、通道数、存储深度、触发系统和探头特性共同决定。带宽定义高频响应边界,需遵循5倍法则以保障数字信号上升沿测量精度;采样率则依据奈奎斯特定理并结合工程冗余(通常≥2.5×带宽)实现可靠时域重建。二者协同影响信号完整性评估能力,尤其在UART、I²C、SPI等嵌入式总线调试中至关重要。高存储深度支持长时捕获与毛刺定位,智能触发与硬件协议解码进一步将波形分析升维至语义级。本文围绕真实嵌入式场景,解析参数间的耦合关系与典型误用陷阱。

weixin_42588877的博客 91

QT中树控件QTreeView开发实例

Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系。这种结构带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示,它也提供一个标准的model接口,使得更多的数据源可以被这些item view使用。

Smile 3754

AIPex:AI + 自然语言驱动的浏览器自动化扩展

AIPex是一款革命性的Chrome扩展,通过AI技术实现自然语言驱动的浏览器自动化。它支持30多种自动化工具,包括智能标签页管理(分组、切换、批量操作)、页面内容提取(文本、链接、元数据)、交互元素操作(点击、滚动)以及表单智能填写等功能。用户只需用自然语言下达指令,即可快速完成复杂的浏览器操作,大幅提升工作效率。AIPex特别适合需要处理大量重复性网页操作的用户,如数据分析师、产品经理等。

blues_C的博客 1132

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

QT简单模型/视图类的使用

QT简单模型/视图类的使用程序效果展示 程序 main.cpp #include "mainwindow.h" #include <QApplication> #include <QTreeView> #include <QListView> #include <QTableView> #include <QDirModel> #incl...

weixin_44011306的博客 275

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Qt:24---QFileSystemModel、QDirModel数据模型

一、QFileSystemModel类的基本功能 QFileSystemModel提供了一个可用于访问本机文件系统的数据类型 QFileSystemModel可以和视图组件QTreeView、QListView、QTableView结合使用,显示文件系统的信息 二、QFileSystemModel的一些函数 //要通过QFileSystemModel获得本机的文件系统,需要用此函数为QFi...

董哥的黑板报 2042

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Qt学习笔记(六)项视图类

[原博客地址]https://blog.youkuaiyun.com/skc361/article/details/12754193 许多应用程序允许用户搜索、查看和编辑属于某个数据集中的一些个别项。这些数据可能保存在文件中、数据库中或者网络服务器上。处理像这样的数据集的标准方式是使用Qt的项视图类(item view cla...

JMaliex 930

QT之QTreeView使用总结

1、在UI界面中拖TreeView控件进UI界面。 2、一般Qt中使用model来管理数据与视图的关系,使用delegate重写point()处理UI效果。 一、model QT提供了一些现成的models用于处理数据项: QStringListModel 用于存储简单的QString列表。 QStandardItemModel 管理复杂的树型结构数据项,每项都可以包含任意数据。 QDirModel提供本地文件系统中的文件与目录信息。 QSqlQueryModel,QSqlTableModel,QSql

Linux柒匠心 1万+

QDirModel

QDirModel 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://devbean.blog.51cto.com/448512/265658 今天我们来看一个很有用的model:QDirModel。这个model允许我们在view中显示操作系统的目录结构。这次让我们先来看看运行结果: ...

223

Qt5开发从入门到精通——第八篇一节(模型/视图结构—— 文件目录浏览器)

本章节会给大家带来模型/视图结构的概述及文件目录浏览器的实例。MVC 设计模式是起源于 Smalltalk 的一种与用户界面相关的设计模式。通过使用此模式,可以有效地分离数据和用户界面。MVC 设计模式包括三个元素:表示数据的模型 (Model) 、表示用户界面的视图 (View) 和定义了用户在界面上操作的控制器 (Controller)。与 MVC 设计模式类似, Qt 引入了模型/视图结构用千完成数据与界面的分离,即 InterView框架。

weixin_44759598的博客 996

QT中QTreeView学习的两个例子

本文讲解了QT中树控件QTreeView开发实例,对于QTreeView没有过多的讲解,那么不说废话了,看代码是如何实现的吧。 方法一:使用QDirModel进行目录的现实,QDirModel是QT中专为文件目录树型显示所提供的一种model。 具体使用如下: 1. #include 2. 3. int main(int argc, char *argv[]) 4. { 5. QAp

System Architect 4768

Qt学习之路(43): QDirModel

Qt学习之路(43): QDirModel 2010-01-14 20:49:16 标签:C++ 教程 学习 QT教程 Qt 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://devbean.blog.51cto.com/448512/265658 今天我们来看一个很有用的model:QDirModel

carrie0728的专栏 716

Qt编程25:QDirModel与QTreeView使用显示目录结构

QDirModel类封装了计算机的文件系统并且可以显示(或者隐藏      )不同的文件属性。可以为这个模型应用过滤器,这样就可以根据自己的需要显示不同类型的文件系统条目,并且用不同的方式对这些条目进行排序

jhe_zhang-blog 3927

项视图

许多应用程序允许用户搜索、查看和编辑属于某个数据集中的一些个别项。这些数据可能保存在文件中、数据库或者网络服务器上。处理这样的数据集的标准方式是使用Qt的项视图类(item view class)。 QT的项视图类有:QListWidget,QTableWidget,QTreeWidget QT的视图有:QListView,QTableView,QTreeView QT的模型有:QSqlTa

f324234的专栏 447
上一篇: Qt学习:项视图类之QStringListModel和QListView
下一篇: Qt学习:项视图类之QSortFilterProxyModel和QListWidget
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值