qtreewidget 添加复选按钮_qtreewidgetitem添加按钮_杜xx的博客-程序员宅基地

QStringList root;
    root << tr("用户权限");
    QTreeWidgetItem *m_pTreeItem = new QTreeWidgetItem(ui->treeWidget, root);
    m_pTreeItem->setData(0, Qt::UserRole, 0);
    //m_pTreeItem->setCheckState();
    //m_pTreeItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
    m_pTreeItem->setCheckState(0, Qt::Unchecked);
    m_pTreeItem->setExpanded(true);


    QStringList strlist;
    {


        strlist<<tr("系统配置管理权限");
        QTreeWidgetItem *firstchild = new QTreeWidgetItem(m_pTreeItem, strlist);
        firstchild->setData(0, Qt::UserRole, 1);
        firstchild->setCheckState(0, Qt::Unchecked);
    }


    {
        strlist.clear();
        strlist<<tr("安保权限");
        QTreeWidgetItem *secondchild = new QTreeWidgetItem(m_pTreeItem, strlist);
        secondchild->setData(0, Qt::UserRole, 2);
        secondchild->setCheckState(0, Qt::Unchecked);
    }


    {
        strlist.clear();
        strlist<<tr("制卡权限");
        QTreeWidgetItem *thirdchild = new QTreeWidgetItem(m_pTreeItem, strlist);
        thirdchild->setData(0, Qt::UserRole, 0x0001);
        thirdchild->setCheckState(0, Qt::Unchecked);


        strlist.clear();
        strlist<<tr("员工卡制卡权限(普通)");
        QTreeWidgetItem *subchild = new QTreeWidgetItem(thirdchild, strlist);
        subchild->setData(0, Qt::UserRole, 0x0001);
        subchild->setCheckState(0, Qt::Unchecked);


        strlist.clear();
        strlist<<tr("员工卡制卡权限(核心)");
        QTreeWidgetItem *subsecchild = new QTreeWidgetItem(thirdchild, strlist);
        subsecchild->setData(0, Qt::UserRole, 0x0002);
        subsecchild->setCheckState(0, Qt::Unchecked);


        strlist.clear();
        strlist<<tr("员工卡制卡权限(核心)");
        QTreeWidgetItem *subthirdchild = new QTreeWidgetItem(thirdchild, strlist);
        subthirdchild->setData(0, Qt::UserRole, 0x0004);
        subthirdchild->setCheckState(0, Qt::Unchecked);

    }




void adduserdlg::on_treeWidget_itemChanged(QTreeWidgetItem* item, int column)
{
    if(item->checkState(0) == Qt::Unchecked)
    {
        int count = item->childCount();


        for(int i=0; i< count; i++)
        {
            item->child(i)->setCheckState(0, Qt::Unchecked);


            int subcount = item->child(i)->childCount();
            for(int j =0; j< subcount; j++)
            {
                item->child(i)->child(j)->setCheckState(0, Qt::Unchecked);
            }


        }
    }
    else
    {
        int count = item->childCount();


        for(int i=0; i< count; i++)
        {
            item->child(i)->setCheckState(0, Qt::Checked) ;


            int subcount = item->child(i)->childCount();
            for(int j =0; j< subcount; j++)
            {
                item->child(i)->child(j)->setCheckState(0, Qt::Checked);
            }
        }
    }
}





版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/du_bingbing/article/details/51122148

智能推荐

Inventor 2020 安装教程_inventor安装教程_蓝色蛋黄包的博客-程序员宅基地

1. 进入 Autodesk 教育版官网下 Inventor 下载页:https://www.autodesk.com.cn/education/free-software/inventor-professional没有教育版账号的注册一下,学校老师/学生都可以注册,由教育版账号的直接登陆。2. 点击上图中创建账户(有账户的可跳过该步骤)填好信息,点击“下一步”填好...

spark-2.2.0-bin-2.6.1-cdh5.7.1 编译部署(三)_spark编译生成的bin_VincentQB的博客-程序员宅基地

1. 相关说明:spark编译部署后市需要做优化调整的,特别是生产环境,本篇会不断记录更新优化调整点。2. 调整spark-shell日志输出级别:# 进入spark家目录的conf目录cd /usr/local/spark/conf# 配置spark-shell的日志级别cp -av log4j.properties.template log4j.properties...

THREE.JS入门教程-2.着色器-上_yu0089的博客-程序员宅基地

译序Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。国外网站 aerotwist.com 有六篇较为简单的入门教程,我尝试着将其翻译过来,与大家分享。0.简介之前我已经给出了一

基于GraphCuts图割算法的图像分割----OpenCV代码与实现_weixin_30648963的博客-程序员宅基地

转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/44151213,来自:shiter编写程序的艺术1.绪论图切割算法是组合图论的经典算法之一。近年来,许多学者将其应用到图像和视频分割中,取得了很好的效果。本文简单介绍了图切算法和交互式图像分割技术,以及图切算法在交互式图像分割中的应用。图像分割指图像分成各具...

A20启动LUNCH选项修改_weixin_33860553的博客-程序员宅基地

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

杂七杂八——使用LINQ检索重复值_iteye_3619的博客-程序员宅基地

杂七杂八——使用LINQ检索重复值日常工作的时候,我们经常遇到需要检索一组数据中是否有重复值的情况,再根据具体情况进行相应的操作。如果不使用LINQ,那我们就得使用一层一层的foreach循环来做,不但麻烦、工作效率低(因为你得绕啊~~绕啊~~~),而且容易出bug。使用LINQ就方便得多。举个我前天在工作中遇到的例子吧。当时是这样的——我需要查看一下用户新插入的值是否已经存在于数...

随便推点

Swift 指南_swift标准指南_沐云落的博客-程序员宅基地

这份指南汇集了 Swift 语言主流学习资源,并以开发者的视角整理编排。对于精选项目及文章,可直接访问《Swift 项目精选》和《Swift 文章精选》。还有开发者们自己维护的《Swift 开发者、项目、最佳实践》。当然也不能错过那些活跃、优秀的《开发者个人资料页》。目录入门指引教程文章开源项目推荐网站开发工具媒体报道开放平台Apple Watch 指南入门指引

Hbase如何通过Kerberos认证获取数据_hbase 如何跳过kerberos认证_Therefore丶的博客-程序员宅基地

最近在做一个项目,需要先拉取hbase上面的数据,然后进行指标计算。 但是集群Hadoop生态圈都设置了Kerberos认证,故记录此文,解决Kerberos认证过程中的问题。 代码需要先获取Hbase连接,而连接需要先通过Kerberos认证。(详细关注kerberos()这个方法)。然后拿着连接去遍历Hbase表,表名是根据当前时间生成的。然...

linux svn 忽略列表_weixin_30340617的博客-程序员宅基地

svn propset svn:ignore "文件名" 作用目录转载于:https://www.cnblogs.com/codingking/p/4462266.html

用 nssm 把 Nginx 安装成 Windows 服务方法_weixin_30731287的博客-程序员宅基地

总之:用 nssm 比srvany.exe简便多了。1. 下载nginx windows版本:http://nginx.org/2. 下载nssm :http://nssm.cc/3. 安装Nginx下载解压到一个目录,nssm下载后解压相应版本(32/64)到一个目录。然后安装服务:nssm install N1"D:\N1\nginx.exe"即可安装成功最基本的服务,不过启动的是...

Cisco单臂路由配置,图文实例详解_weixin_34194702的博客-程序员宅基地

Cisco单臂路由配置 单臂路由,即在路由器上设置多个逻辑子接口,每个子接口对应一个vlan。在每个子接口的数据在物理链路上传递都要标记封装。Cisco设备支持ISL和802.1q(dot1Q)协议。华为只支持802.1q。 DOT1Q和ISL的区别:DOT1Q是各类产品的VLAN通用协议模式,Dot1q是一种普遍使用的标准,适用所有交换机与路由...

linux 文件测试与shell循环_AirZH??的博客-程序员宅基地

条件测试使用方式:test expression 或[::expression::] 或[[::expression::]]说明:“test”和”[“ 均为命令,”[[”是关键字上面的形式中的□为空格,必须整数测试-eq 等于 [ "$a" -eq "$b" ]-ne 不等于 [ "$a" -ne "$b" ]-gt 大于 [ "$a"...

推荐文章

热门文章

相关标签