当前位置: 首页 > news >正文

树形结构的窗口小部件

这段代码是一个使用Qt框架的C++程序,实现了一个树形结构的窗口小部件(TreeWidget)。以下是主要的解释:

#include "treewidget.h"
#include "ui_treewidget.h"TreeWidget::TreeWidget(QWidget *parent) : QWidget(parent), ui(new Ui::TreeWidget)
{ui->setupUi(this);initTree();
}TreeWidget::~TreeWidget()
{delete ui;
}template<typename T>
QTreeWidgetItem* TreeWidget::addChild(T parent, const QString& text)
{auto item = new QTreeWidgetItem(parent, QStringList(text));item->setCheckState(0, Qt::Unchecked);return item;
}void TreeWidget::initTree()
{auto item = addChild(ui->tree, "top");QList<QTreeWidgetItem*> listChild;for(int nIndex = 1; nIndex <= 5; ++nIndex){auto pItem = addChild(item, QString("child%1").arg(nIndex));listChild.append(pItem);}for(const auto& child : listChild){for(int nRet = 1; nRet <= 5; ++nRet){addChild(child, QString("grandchild%1").arg(nRet));}}ui->tree->expandAll();
}void TreeWidget::updateParentItemStatus(QTreeWidgetItem* item)
{auto parent = item->parent();if (Q_NULLPTR == parent){return;}parent->setCheckState(0, item->checkState(0));int nCount = parent->childCount();for (int nIndex = 0; nIndex < nCount; ++nIndex){auto child = parent->child(nIndex);if (child->checkState(0) != parent->checkState(0)){parent->setCheckState(0, Qt::PartiallyChecked);break;}}updateParentItemStatus(parent);
}void TreeWidget::updateChildItemStatus(QTreeWidgetItem* item)
{int nCount = item->childCount();for (int nIndex = 0; nIndex < nCount; ++nIndex){auto child = item->child(nIndex);child->setCheckState(0, item->checkState(0));if (child->childCount() > 0){updateChildItemStatus(child);}}
}void TreeWidget::slot_treeItemChanged(QTreeWidgetItem* item, int)
{updateChildItemStatus(item);updateParentItemStatus(item);
}
  1. 构造函数和析构函数:

    • TreeWidget::TreeWidget(QWidget *parent):构造函数,初始化了UI并调用了initTree方法来初始化树形结构。
    • TreeWidget::~TreeWidget():析构函数,负责释放UI资源。
  2. addChild模板方法:

    • TreeWidget::addChild(T parent, const QString& text):是一个模板方法,用于添加树形结构中的子项(QTreeWidgetItem)。它创建一个新的子项,设置其显示文本为给定的文本,然后返回这个新的子项。
  3. initTree方法:

    • TreeWidget::initTree():在这个方法中,创建了一个树的顶层项(“top”)和一些子项和孙子项,形成了一个树形结构。设置了每个项的复选框状态,并最后展开了整个树。
  4. updateParentItemStatus和updateChildItemStatus方法:

    • TreeWidget::updateParentItemStatus(QTreeWidgetItem* item):递归更新父项的复选框状态。如果子项的状态与父项的状态不同,则设置父项的状态为部分选中。
    • TreeWidget::updateChildItemStatus(QTreeWidgetItem* item):递归更新子项的复选框状态,将其状态设置为与父项相同。
  5. slot_treeItemChanged槽函数:

    • TreeWidget::slot_treeItemChanged(QTreeWidgetItem* item, int):这是一个槽函数,与QTreeWidgetitemChanged信号连接。当树中的项的状态发生变化时,此槽函数被调用。它通过调用updateChildItemStatusupdateParentItemStatus方法来更新相关的子项和父项的状态。

相关文章:

树形结构的窗口小部件

这段代码是一个使用Qt框架的C程序&#xff0c;实现了一个树形结构的窗口小部件&#xff08;TreeWidget&#xff09;。以下是主要的解释&#xff1a; #include "treewidget.h" #include "ui_treewidget.h"TreeWidget::TreeWidget(QWidget *parent) : QWidg…...

【现代密码学】笔记3.1-3.3 --规约证明、伪随机性《introduction to modern cryphtography》

【现代密码学】笔记3.1-3.3 --规约证明、伪随机性《introduction to modern cryphtography》 写在最前面私钥加密与伪随机性 第一部分密码学的计算方法论计算安全加密的定义&#xff1a;对称加密算法 伪随机性伪随机生成器&#xff08;PRG&#xff09; 规约法规约证明 构造安全…...

Redis底层原理

持久化 Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。 RDB RDB持久化是把当前进程数据生成快照保存到硬盘的过程。所谓内存快照,就是…...

掌握亚马逊、Lazada、shopee、速卖通、eBay、wish测评自养号补单系统:解锁跨境电商新机遇

在选择测评环境系统时&#xff0c;市面上有很多选项。但是&#xff0c;究竟哪个系统使用起来更高效、成本更低、成功率更高呢&#xff1f;下面将详细分析各种网络环境的使用经验&#xff0c;希望能帮助大家避免一些不必要的困扰和错误。我曾经亲自尝试过各种网络环境&#xff0…...

15_多线程

文章目录 OS中的基本概念进程&#xff08;process&#xff09;与线程&#xff08;thread&#xff09;串行(serial)、并行(parallel)与并发(concurrency)同步(synchronization)与异步(asynchronization) java程序运行原理java命令主类类名运行原理 多线程的实现方式一&#xff1…...

吉他打谱软件Guitar Pro8苹果Mac电脑简体中文特别版

Guitar Pro 8 Mac是一款吉他编曲学习软件&#xff0c;用于吉他、贝和其他弦乐器的制谱和演奏&#xff0c;这是一个多轨编辑器&#xff0c;具有集成的 MIDI 编辑器、合唱绘图仪、吉他、节拍器和其他音乐家工具。它使您能够编辑吉他、贝司和尤克里里、乐谱、指法谱&#xff0c;并…...

go study oneday

这段代码的详细解释&#xff0c;涵盖了Go 语言变量声明、函数调用、用户输入、类型转换以及结果输出。 package main import "fmt" func main() {var num1 intvar num2 float32var num3 intfmt.Println("请输入数字一&#xff1a;")fmt.Scanln(&num1)f…...

Avatar虚拟数字人方案,元宇宙时代的企业新动力

随着元宇宙概念的兴起&#xff0c;虚拟数字人技术逐渐成为各行业关注的焦点。为了满足市场需求&#xff0c;美摄科技凭借专业、自研的虚拟数字人技术&#xff0c;结合强大的ChatGPT能力&#xff0c;隆重推出Avatar虚拟数字人方案&#xff0c;助力企业实现营销及内容创作的生产力…...

用golang 实现给图片添加文字水印

package mainimport ("fmt""github.com/golang/freetype""image""image/draw""image/jpeg""io""os""time" )func main() {// 打开原始图片file, err : os.Open("004.jpeg")if err …...

苹果电脑Markdown文本编辑Typora mac功能介绍

Typora mac是一款跨平台的Markdown编辑器&#xff0c;支持Windows、MacOS和Linux操作系统。它具有实时预览功能&#xff0c;能够自动将Markdown文本转换为漂亮的排版效果&#xff0c;让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…...

大型语言模型与知识图谱的完美结合:从LLMs到RAG,探索知识图谱构建的全新篇章

最近,使用大型语言模型(LLMs)和知识图谱(KG)开发 RAG(Retrieval Augmented Generation)流程引起了很大的关注。在这篇文章中,我将使用 LlamaIndex 和 NebulaGraph 来构建一个关于费城费利斯队(Philadelphia Phillies)的 RAG 流程。 我们用的是开源的 NebulaGraph 来…...

Vue 缓存Hook:提高接口性能,减少重复请求

前言 在开发 Web 应用时&#xff0c;我们经常会遇到需要重复调用接口的场景。例如&#xff0c;当用户频繁刷新页面或进行某个操作时&#xff0c;我们可能需要多次请求相同的数据。这不仅会增加服务器负担&#xff0c;还会导致用户体验下降。为此&#xff0c;我们可以使用缓存机…...

【Python机器学习】用于回归的决策树

用于回归的决策树与用于分类的决策树类似&#xff0c;在DecisionTreeRegressor中实现。DecisionTreeRegressor不能外推&#xff0c;也不能在训练数据范围之外的数据进行预测。 利用计算机内存历史及格的数据进行实验&#xff0c;数据展示&#xff1a; import pandas as pd im…...

numpy库的一些常用函数

文章目录 广播&#xff08;broadcast&#xff09;迭代数组数组运算修改数组的形状 修改数组维度连接数组分割数组数组元素的添加与删除Numpy算术函数Numpy 统计函数Numpy排序、条件筛选函数条件筛选 import numpy as np anp.arange(15).reshape(3,5)aarray([[ 0, 1, 2, 3, …...

成员变量与局部变量的区别?

如果你现在需要准备面试&#xff0c;可以关注我的公众号&#xff1a;”Tom聊架构“&#xff0c;回复暗号&#xff1a;”578“&#xff0c;领取一份我整理的50W字面试宝典&#xff0c;可以帮助你提高80%的面试通过率&#xff0c;价值很高&#xff01;&#xff01; 语法形式&…...

ES6---判断对象是否为{}

介绍 使用es6语法判断一个对象是否为{} 示例 使用ES6的Object.keys()方法&#xff0c;返回值是对象中属性名组成的数组 let obj {}let keys Object.keys(obj) if(keys.length){alert(对象不为{}) }else{alert(对象为{}) }代码地址 https://gitee.com/u.uu.com/js-test/b…...

高性能、可扩展、分布式对象存储系统MinIO的介绍、部署步骤以及代码示例

详细介绍 MinIO 是一款流行的开源对象存储系统&#xff0c;设计上兼容 Amazon S3 API&#xff0c;主要用于私有云和边缘计算场景。它提供了高性能、高可用性以及易于管理的对象存储服务。以下是 MinIO 的详细介绍及优缺点&#xff1a; 架构与特性&#xff1a; 开源与跨平台&am…...

oracle重启数据库lsnrctl重启监听

oracle重启数据库lsnrctl重启监听 su到oracle用户下,命令 su - oracle切换需要启动的数据库实例&#xff1a; export ORACLE_SIDorcl进入Sqlplus控制台&#xff0c;命令&#xff1a; sqlplus /nolog以系统管理员登录&#xff0c;命令&#xff1a; connect / as sysdba如果是…...

08、Kafka ------ 消息存储相关的配置-->消息过期时间设置、查看主题下的消息存活时间等配置

目录 消息存储相关的配置★ 消息的存储介绍★ 消息过期时间及处理方式演示&#xff1a;log.cleanup.policy 属性配置 ★ 修改指定主题的消息保存时间演示&#xff1a;将 test2 主题下的消息的保存时间设为10个小时1、先查看test2主题下的配置2、然后设置消息的保存时间3、然后再…...

JAVA基础学习笔记-day15-File类与IO流

JAVA基础学习笔记-day15-File类与IO流 1. java.io.File类的使用1.1 概述1.2 构造器1.3 常用方法1、获取文件和目录基本信息2、列出目录的下一级3、File类的重命名功能4、判断功能的方法5、创建、删除功能 2. IO流原理及流的分类2.1 Java IO原理2.2 流的分类2.3 流的API 3. 节点…...

11.0592MHz晶振在51单片机串口通信中的优势解析

1. 为什么11.0592MHz晶振成为单片机工程师的首选在嵌入式系统设计中&#xff0c;晶振的选择往往决定了整个系统的稳定性和精度。作为一名从事单片机开发多年的工程师&#xff0c;我发现11.0592MHz的晶振在51单片机项目中出现的频率异常高。这绝非偶然&#xff0c;而是由一系列精…...

pybind11进阶指南:如何高效封装C++类供Python调用(附常见问题解决方案)

pybind11进阶指南&#xff1a;如何高效封装C类供Python调用&#xff08;附常见问题解决方案&#xff09; 在当今高性能计算和科学计算领域&#xff0c;C与Python的结合已成为开发者工具箱中不可或缺的组合。C提供底层性能优势&#xff0c;而Python则以其简洁语法和丰富生态著称…...

OneAPI安全增强指南:令牌过期策略、兑换码批量发放、用户邀请奖励机制详解

OneAPI安全增强指南&#xff1a;令牌过期策略、兑换码批量发放、用户邀请奖励机制详解 1. 引言&#xff1a;为什么你需要一个统一的大模型网关&#xff1f; 如果你正在使用或者管理多个大模型服务&#xff0c;比如 OpenAI 的 ChatGPT、百度的文心一言、阿里的通义千问&#x…...

PROJECT MOGFACE自动化运维:服务器监控日志分析与告警报告生成

PROJECT MOGFACE自动化运维&#xff1a;服务器监控日志分析与告警报告生成 每天凌晨&#xff0c;当运维工程师小李被手机告警铃声惊醒&#xff0c;睡眼惺忪地打开电脑&#xff0c;面对几十台服务器海量的监控图表和日志文件时&#xff0c;他总在想&#xff1a;有没有一种方法&…...

手把手教你用DuckDB 1.3.0的DuckLake功能搭建数据湖(PostgreSQL+MinIO实战)

实战指南&#xff1a;基于DuckDB 1.3.0与MinIO构建企业级数据湖架构 在数据驱动的时代&#xff0c;企业需要更灵活、高效的解决方案来管理海量数据。DuckDB 1.3.0推出的DuckLake功能&#xff0c;结合PostgreSQL的元数据管理能力和MinIO的对象存储优势&#xff0c;为中小型企业…...

Pixel Aurora Engine快速部署:阿里云ECS轻量服务器一键安装脚本

Pixel Aurora Engine快速部署&#xff1a;阿里云ECS轻量服务器一键安装脚本 1. 像素极光引擎简介 Pixel Aurora&#xff08;像素极光&#xff09;是一款基于AI扩散模型的高端绘图工作站&#xff0c;采用独特的复古像素游戏风格界面设计。这款创意引擎能够将文字描述转化为极具…...

思源宋体免费商用字体:设计师的终极开源字体解决方案

思源宋体免费商用字体&#xff1a;设计师的终极开源字体解决方案 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为商业项目寻找高质量中文字体而烦恼吗&#xff1f;Source Han Se…...

LFM2.5-1.2B-Thinking-GGUF部署教程:适配A10/A100/L4等主流GPU显存优化方案

LFM2.5-1.2B-Thinking-GGUF部署教程&#xff1a;适配A10/A100/L4等主流GPU显存优化方案 1. 模型简介与核心优势 LFM2.5-1.2B-Thinking-GGUF 是 Liquid AI 推出的轻量级文本生成模型&#xff0c;专为低资源环境优化设计。该模型采用 GGUF 格式存储&#xff0c;配合高效的 llam…...

魔兽争霸3帧率优化与性能调优指南:从卡顿到高流畅度的开源解决方案

魔兽争霸3帧率优化与性能调优指南&#xff1a;从卡顿到高流畅度的开源解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 在现代硬件环境下运行经…...

SiameseUIE部署指南:test.py中custom_entities字段详解

SiameseUIE部署指南&#xff1a;test.py中custom_entities字段详解 1. 概述 如果你正在使用SiameseUIE模型进行信息抽取&#xff0c;那么test.py脚本中的custom_entities字段就是你最需要关注的核心配置。这个看似简单的字段&#xff0c;实际上决定了模型如何精准地从文本中抽…...