如何隐藏QTreeWidgetItem 的checkbox,且当没有勾选QTreeWidget的子节点时,对话框的Ok按钮禁用,有勾选的,则高亮启用

本文主要是介绍如何隐藏QTreeWidgetItem 的checkbox,且当没有勾选QTreeWidget的子节点时,对话框的Ok按钮禁用,有勾选的,则高亮启用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

没有勾选
勾选

 

    此电脑,是根节点QTreeWidgetItem,当item->setData(0, Qt::CheckStateRole, QVariant());后就会隐藏checkBox

 item->setCheckState(0, Qt::PartiallyChecked);

 item->setCheckState(0, Qt::Unchecked);

item->setCheckState(0, Qt::Checked);

以上三种状态都会显示checkbox

//当点击目录树,就会响应下面这个函数,去改变整个目录节点的状态,而此时需求需要根节点没有CHeckbox,

 item->parent() == NULL)   //表示此时是根节点 此时通过根节点判断是否有勾选项,再发送一个信号,通知去显示或隐藏确定按钮,再隐藏根节点的checkbox

void CLocalDirTreeWgt::UpdateRightLeftTreeWidgetParentItem(QTreeWidgetItem* item)
{
    if (item == NULL)//表明点击的就是根节点
    {
        return;
    }
    int selectedCount = 0;
    bool bHavePartiallyChecked = false;
    int childCount = item->childCount();
    for (int i = 0; i < childCount; i++) //判断有多少个子项被选中
    {
        QTreeWidgetItem* childItem = item->child(i);
        if (childItem->checkState(0) == Qt::Checked)
        {
            selectedCount++;
        }
        if (childItem->checkState(0) == Qt::PartiallyChecked)
        {
            bHavePartiallyChecked = true;
        }
    }

    m_bLeftChange = false;

    FILE_NODE info = item->data(0, FILE_TYPE).value<FILE_NODE>();

    if (bHavePartiallyChecked)
    {
        item->setCheckState(0, Qt::PartiallyChecked);
    }
    else
    {
        if ((childCount > 0) && (selectedCount <= 0))  //如果没有子项被选中,父项设置为未选中状态
        {
            item->setCheckState(0, Qt::Unchecked);
        }
        else if (selectedCount > 0 && selectedCount < childCount)    //如果有部分子项被选中,父项设置为部分选中状态,即用灰色显示
        {
            item->setCheckState(0, Qt::PartiallyChecked);
        }
        else if (selectedCount == childCount)    //如果子项全部被选中,父项则设置为选中状态
        {
            item->setCheckState(0, Qt::Checked);
        }
    }

    if (item->parent() == NULL)    //表示此时是根节点
    {
        if ((m_rootLeftItem->checkState(0) == Qt::Checked) || (m_rootLeftItem->checkState(0) == Qt::PartiallyChecked))
        {
            sigOkBtnisOk(true);    
        }
        else
        {
            sigOkBtnisOk(false);
        }

        item->setData(0, Qt::CheckStateRole, QVariant());
    }

    UpdateRightLeftTreeWidgetParentItem(item->parent());
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这篇关于如何隐藏QTreeWidgetItem 的checkbox,且当没有勾选QTreeWidget的子节点时,对话框的Ok按钮禁用,有勾选的,则高亮启用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/585057

相关文章

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Nginx禁用TLSv1.0 1.1改为TLSv1.2 1.3的操作方法

《Nginx禁用TLSv1.01.1改为TLSv1.21.3的操作方法》使用MozillaSSL配置工具生成配置,修改nginx.conf的ssl_protocols和ssl_ciphers,通... 目录方法一:方法二:使用 MoziChina编程lla 提供的 在线生成SSL配置工具,根据自己的环境填充对应的

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi