介绍

复选框有三种形态:全选对勾、全不选空白、半选黑点
在item中通过:setCheckable(true);可开启复选框功能,但默认只支持全选对勾、全不选空白,而且自身的状态变动不会使父/子节点相应,比如子节点全部选中时父节点不会自动勾选
下面你提供一个完整的UsingCheckboxItem类,此类继承自QStandardItem,实现了复选框三种状态的使用。类内容很纯粹并未增加其他设置,仅为复选框实现。
注意,此方式让一个item调用了其父节点及子节点的data和setdata两个方法,若不符合设计要求,可仿照此方式在model中重现
下面直接上源码:
源码
GitHub:QtWidgetsExamples
using_checkbox_item.h
/**
* @file using_checkbox_item.h
* @brief 本文件包含支持复选框item类声明。
* @version 1.0.0.0
* @date 2017.12.18
* @author Techie亮
*/
#ifndef _H_USINGCHECKBOXITEM_
#define _H_USINGCHECKBOXITEM_
#include <QStandardItem>
#include <QString>
/**
* @brief 支持复选框item类
* 支持复选框三态转变-全选对勾、全不选空白、半选黑点
* 子类会自动通知父子节点item,若不符合设计需要可仿照此方式在model中的setDate重现
*/
class UsingCheckboxItem : public QStandardItem {
public:
/**
* @brief 构造函数
* @param item显示内容
*/
explicit UsingCheckboxItem(const QString &text);
/**
* @brief setData重写
* @param value data值
* @param role data类型
*/
vi

本文介绍了如何在QTreeView或QTableView中使用QStandardItem实现复选框的全选、半选和不选三种状态。通过自定义UsingCheckboxItem类,重写setData方法来处理CheckStateRole,确保状态变化正确反映在父/子节点。详细源码和测试函数可在GitHub找到。
最低0.47元/天 解锁文章
9198

被折叠的 条评论
为什么被折叠?



