如何隐藏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

相关文章

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

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计