Qt中使用QDirModel / QFileSystemModel + QTreeView显示Checkbox复选框

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 

 

需要编写一个QDirModel / QFileSystemModel的子类,重写QDirModel / QFileSystemModel的flags( )data( )setData( )方法。


定义一个QSet<QPersistentModelIndex>,名为checkedIndexes,用于记录Checked的路径名。

flags( )中返回 ItemIsUserCheckable

data( )中判断给定的项是否在checkedIndexes中,有的话就返回Qt::Checked,没有 就返回Qt::Unchecked

setData( )则把值为Qt::Checked的给定项,以及给定项的所有子孙节点,全都添加到checkedIndexes里。

recursiveCheck( )用于递规添加子节点。

 

下面的代码是基于QDirModel写的。如果用QFileSystemModel,选择文件夹时,自动选择子节点不太好实现,因为QFileSystemModel是异步载入,在载入之前rowCount( )总是返回0。可以通过QDirIterator

QTreeView复选框的实现 阅读详情

相关推荐

QT学习笔记(11)-QTreeView显示系统目录并实现复选框

目录完成的功能秃使用QTreeView显示系统目录 完成的功能秃 使用QTreeView显示系统目录 其实这里显示目录的难度不大,也就只有几行代码就实现了,较难的在显示三态,这里只实现了checkbox的checked与unchecked的功能。 贴一下代码: mytreemodel,h: #ifndef MYTREEMODEL_H #define MYTREEMODEL_H #include <QWidget> #include <QDirModel> #include &lt

zwz_chome的博客 2142

QT QTreeWidget添加复选框

1、给QTreeWidget添加复选框,实现部分选中,全部选中。 2、如果部分选中,父级复选框为对勾,则需设置风格。

QT QTreeView\QTreeWidget控件 使用详解

本文详细的介绍了QTreeViewQTreeWidget控件的各种操作,例如:新建界面、控件布局、设置列、设置宽高、设置列表头、设置复选框、设置图标、添加树、删除树、查找树、修改树、设置选中、树排序、事件、信号、槽函数、添加节点、默认选中、.h源文件、cpp源文件、其它文章等等操作。实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。布局管理器可以完成两件事:自动调整控件的位置,包括控件之间的间距、对齐等;

断点 2万+

QT实现的treeView有复选框

QT实现的treeView模型视图的实例、主节点有三态复选框

QFileSystemModel

QFileSystemModel提供的接口函数可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。在使用QFileSystemModel获取文件名称、文件大小、文件类型以及文件路径时,出现一个错误导致程序不能运行。mainwindow.cpp文件。mainwindow.h文件。

sherry_zhen的博客 419

QTreeView 动态设置复选框

初始化一个QTreeView 的界面,并设置相关的model // 在ui中新建两个QTreeView 命名为 addedView,notAddView //初始化QTreeView 界面 ui->setupUi(this); ui->addedView->header()->hide();//表头隐藏 ui->notAddView->header()->hide(); //设置model QStandardItemModel m_addedModel, m

fuyouzhiyi的博客 3471

基于QtQFileSystemModel做一个带checkbox的文件树

做之前看了一下QFileSystemModelQDirModel,发现Qt官方是推荐使用QFileSysteModel的,因为QDirModel是一次性加载所有的文件目录,包括所有的子目录的,这样性能上就会很慢,而QFileSystemModel则是异步载入的,那样只有你点开一个节点,只会加载它的下一级目录的节点。所以我们用QFileSystemModel来做复选框的时候,就会出现这么...

910

Qt树形控件QTreeView使用2——复选框的设置

通过QStandardItem和QStandardItemModel可以很简单方便的给QTreeView添加节点,但是,许多树形控件都需要树的节点需要一个复选框checkBox),网上许多资料都是通过自定义model来实现的,而且不能很好的实现checkbox的父子关联(父节点选中子节点全部选中,父节点不选,子节点全部选),下面将介绍如何使用QStandardItem和QStandardItem

尘中远的程序开发记录 4万+

Qt树形控件QTreeView使用——复选框的设置

&nbsp;通过QStandardItem和QStandardItemModel可以很简单方便的给QTreeView添加节点,但是,许多树形控件都需要树的节点需要一个复选框checkBox),网上许多资料都是通过自定义model来实现的,而且不能很好的实现checkbox的父子关联(父节点选中子节点全部选中,父节点不选,子节点全部选),下面将介绍如何使用QStandardItem和QStanda...

xdw_it的博客 9071

qlistview 自定义控件_qlistview使用自定义模型的复选框

我有文件系统模型的子类包括复选框在列表视图,这是正常工作。我的问题是,每当我点击一个项目,该项目的文本消失,当我点击另一个项目时,以前选择的项目的文本变得可见。任何人都可以告诉我背后的原因。这是我实施的代码。请告诉我我在这里错过了什么,谢谢#include "custommodel.h"#include using namespace std;CustomModel::CustomModel(){...

weixin_34579167的博客 789

QAbstractItemView子类如:QTreeViewQTableView等子项单元格复选框勾选/取消勾选功能实现

实现QTreeView子项中的复选框勾选/取消勾选功能

danshiming的博客 2725

Qt:在TreeModel+QTreeView使用复选框(checkbox)

需要实现一个功能:在QT的TreeView中,能够使用复选框,并且选中父节点的复选框可以全选或取消子节点的复选框。这里就以QT附带的simpletreemodel项目为例,说明一下其用法。simpletreemodel项目的路径通常在qt目录的example目录的itemviews目录下,例如,我的就在C:/Qt/2010.05/qt/examples/itemviews里。 1.在

wcknxx的专栏 7112

qt TreeWidget复选框实现

但实际用的时候发现,当文件的层级增多,父节点的文件选中状态会出错,原因是选中文件的时候如果有字节点未反向考虑父节点的选中状态,另外在父节点的选中状态更新中,只考虑了子节点的选中状态,未考虑子节点的未完全选中状态导致了该错误。

qq_42106894的博客 4036

Qt树形控件QTreeView使用——复选框的设置(setCheckable)(setTristate)(关联根的三态子节点两态)

根节点有三态setTristate ,qt5.6版本建议舍去,可通过判断item是否存在父节点判断当前点击是否是根节点,变相的判断是否是三态。关于根节点: 全选/部分全选/不选 会影响子节点的状态。关于子节点 : 选中 /不选中 会影响 根节点的状态。

她的吻让他 1258

QTreeView三态复选

Qt的model/view中,QStandardItem是可以设置复选效果的,在QTreeViewQTableView等中以QCheckBox的样子显示出来。 item->setCheckable(true); // 设置是否能复选(默认只有√和×两种形态) item->setTristate(true); // 设置在复选效果中,是否能出现三态(即部分选中的■) 在低版本的Qt中,QTreeView实现复选需要手动进行逻辑设置,只设置个...

TiredWind的博客 2635

Model/View之子类化QAbstractItemModel实现QTreeView复选框

引言 先上效果图: 最近想要实现上图所示的一个数据展示列表,最先使用QTreeWidget组件进行展示,但是遇到了当数据量过大(10000以上),第一次点击TabPage加载数据时,总是有很卡顿的感觉,得隔一段时间才能加载显示出数据。汗!偷懒偷不成了,效果自己都不能忍,更何况别人。因此使用了Model/View框架,自己实现了数据项和数据模型,最后效果还算满意。 需求是这样的,当点击表头时,可以全

sxpsxp12的博客 1万+
上一篇: [转载]模运算及其应用
Rex237
博客等级 码龄16年 7粉丝 1原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值