Qt手写ListView
创建视图:
QHBoxLayout* pHLay = new QHBoxLayout(this);m_pLeftTree = new QTreeView(this);m_pLeftTree->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑m_pLeftTree->setFixedWidth(300);
创建模型和模型项:
m_pLeftTree->setFrameShape(QFrame::NoFrame);QStandardItemModel* model = new QStandardItemModel(m_pLeftTree);model->setHorizontalHeaderLabels(QStringList() << "draw all");QStandardItem* pParentItem = NULL;QStandardItem* pChildItem = NULL;// 点pParentItem = new QStandardItem(QIcon(":/resources/point.png"), "draw ponit");model->appendRow(pParentItem);//将父项加入ModelpChildItem = new QStandardItem(QIcon(":/resources/point.png"), "point");pParentItem->appendRow(pChildItem);//将子项加入父节点pChildItem = new QStandardItem(QIcon(":/resources/multipoints.png"), "multipoints");pParentItem->appendRow(pChildItem);// 线pParentItem = new QStandardItem(QIcon(":/resources/line.png"), "draw line");model->appendRow(pParentItem);pChildItem = new QStandardItem(QIcon(":/resources/line.png"), "line");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/arc.png"), "arc");pParentItem->appendRow(pChildItem);// 封闭的图形pParentItem = new QStandardItem(QIcon(":/resources/rect.png"), "draw rect");model->appendRow(pParentItem);pChildItem = new QStandardItem(QIcon(":/resources/rect.png"), "rect");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/roundrect.png"), "roundrect");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/chord.png"), "chord");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/ellipse.png"), "ellipse");pParentItem->appendRow(pChildItem);// 任意路径绘制pParentItem = new QStandardItem(QIcon(":/resources/polygon.png"), "draw polygon");model->appendRow(pParentItem);pChildItem = new QStandardItem(QIcon(":/resources/polygon.png"), "polygon");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/polyline.png"), "polyline");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/ConvexPloygon.png"), "ConvexPloygon");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/lines.png"), "lines");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/path.png"), "path");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/pie.png"), "pie");pParentItem->appendRow(pChildItem);// 图片绘制pParentItem = new QStandardItem(QIcon(":/resources/image.png"), "draw image");model->appendRow(pParentItem);pChildItem = new QStandardItem(QIcon(":/resources/image.png"), "image");pParentItem->appendRow(pChildItem);pChildItem = new QStandardItem(QIcon(":/resources/pixmap.png"), "pixmap");pParentItem->appendRow(pChildItem);// 文本绘制pParentItem = new QStandardItem(QIcon(":/resources/text.png"), "draw text");model->appendRow(pParentItem);// 擦除pParentItem = new QStandardItem(QIcon(":/resources/erase.png"), "draw erase");model->appendRow(pParentItem);// 路径填充pParentItem = new QStandardItem(QIcon(":/resources/fillpath.png"), "draw fillpath");model->appendRow(pParentItem);// 矩形填充pParentItem = new QStandardItem(QIcon(":/resources/fillrect.png"), "draw fillrect");model->appendRow(pParentItem);
效果如下:

相关文章:
Qt手写ListView
创建视图: QHBoxLayout* pHLay new QHBoxLayout(this);m_pLeftTree new QTreeView(this);m_pLeftTree->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑m_pLeftTree->setFixedWidth(300);创建模型和模型项: m_pLeftTree…...
【开源】基于Vue.js的城市桥梁道路管理系统的设计和实现
项目编号: S 025 ,文末获取源码。 \color{red}{项目编号:S025,文末获取源码。} 项目编号:S025,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥…...
2、git进阶操作
2、git进阶操作 2.1.1 分支的创建 命令参数含义git branch (git checkout -b)<new_branch> <old_branch>表示创建分支-d <-D>删除分支 –d如果分支没有合并,git会提醒,-D强制删除-a -v查看分支-m重新命名分支commit id从指定的commi…...
集线器-交换机-路由器
1.集线器(Hub) 集线器就是将网线集中到一起的机器,也就是多台主机和设备的连接器。集线器的主要功能是对接收到的信号进行同步整形放大,以扩大网络的传输距离,是中继器的一种形式,区别在于集线器能够提供多端口服务,也…...
金融众筹模式系统源码 适合创业孵化机构+天使投资机构+投资基金会等 附带完整的搭建教程
随着互联网技术的发展和金融市场的开放,金融众筹模式逐渐成为一种新型的融资方式。这种模式通过互联网平台聚集大量投资者,共同参与到一个项目中,为项目提供资金支持,最终获得投资回报。今天罗峰给大家分享一款金融众筹模式系统源…...
大数据学习(24)-spark on hive和hive on spark的区别
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
SQLite3 数据库学习(六):Qt 嵌入式 Web 服务器详解
参考引用 SQLite 权威指南(第二版)SQLite3 入门 1. Apache 搭建 cgi 环境 1.1 什么是 Apache Apache 是世界使用排名第一的 Web 服务器软件 它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用 1.2 具体搭建流程…...
各平台chatGPT使用体验(国内外)
首推:openAI 地址:https://chat.openai.com/ 这个真的很好用,而且回复的结果也基本让让人满意,个人首推,而且对比国内的除了回答更令人满意外,它更连贯,不像国内的gpt一句一问,跟进…...
机器学习【02】在 Pycharm 里使用 Jupyter Notebook
只有 Pycharm 的 Professional 版才支持 Jupyter Notebook 一.新建一个项目 参考新建项目 二.相关设置 右键你的项目名,新建一个JupyterNotebook文件 新建后发现 点击最右边的install jupyter可以自动安装 也可以使用命令行在对应的虚拟环境中安装 我们使用直…...
什么是proxy代理?
1. 什么是proxy代理 代理(Proxy)是 JavaScript 中一种非常强大而灵活的功能。代理允许你拦截并覆盖对象的默认行为,提供了一种拦截、定制和扩展对象操作的机制。 简单说,就是在访问对象属性或者赋值时,可以做一些额外…...
opencv-python读取的图像分辨率太大不能完全显示
如果使用OpenCV-Python读取的图像分辨率太大,无法完全显示在屏幕上,可以考虑以下几种方法: 1.缩放图像:使用OpenCV的resize函数,将图像缩小到适合屏幕显示的大小。例如,可以将图像的宽度和高度都缩小到屏幕…...
【ArcGIS Pro微课1000例】0038:基于ArcGIS Pro的人口密度分析与制图
文章目录 一、人口密度二、人口密度分析1. 点密度分析2. 核密度分析三、结果比对一、人口密度 人口密度是指单位土地面积上居住的人口数,通常以每平方千米或每公顷内的常住人口为单位计算。人口密度同资源、经济密切结合,因此,科学准确地分析人口密度的分布情况,对合理制定…...
Python 安装Vue依赖包发生异常:npm ERR! notsup Required: {“node“:“^18.17.0 || >=20.5.0“}
异常: 原因:node和npm要求升级为高版本 解决:重新安装node环境 (1) 官网下载Node.js (2)双击安装node.js (3)运行查看...
TypeScript 项目 Airbnb 语法风格 ESLint 配置
TypeScript 项目 Airbnb 语法风格 ESLint 配置 1. 配置 安装: npm i -D eslint-config-airbnb-typescript typescript-eslint/eslint-plugin^6.0.0 typescript-eslint/parser^6.0.0配置: .eslintrc.js: module.exports {root: true,env: {node: true…...
怎么使用sentinel,以及所有的知识点
Sentinel是一个开源的流量控制和实时监控系统,主要用于保护企业级应用程序免受不良的请求。下面是使用Sentinel需要了解的知识点: 1. 什么是流量控制? 流量控制指的是限制应用程序的请求流量,防止过多的请求超出系统的承受范围。…...
中国一年有457万人确诊癌症!医生提示:这4种食物,再爱吃也要管住嘴
癌症是威胁人类生命健康的重大疾病,癌症的发生因素一直以来都是专家学者重点探索的课题。据世卫组织最新公布的数据显示,食物或与癌症发生之间存在着密切的联系,某些食物的摄入过多可能会增加患癌症的风险,所以我们应该警惕&#…...
小程序项目:springboot+vue基本微信小程序的宠物领养系统
项目介绍 当今科技发展迅速,交通环境也变得越来越复杂。人们的出行方式变得多元化,这给视障人士带来了一定的困扰。而导盲犬可以帮助视障人士外出行走,提高他们的生活质量。在我国,导盲犬的数量远远少于视障人士的数量。由于导盲…...
数据挖掘 K近邻
什么时候用K近邻? 交叉验证的时候。最常见的交叉验证方法是K折交叉验证,其中数据集被均匀分成K个子集,称为折,然后执行K次训练和测试,每次选择不同的折作为测试集,其余的作为训练集。最后,将K次…...
项目去除git版本控制
我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) 🎃 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 ✈️已经旅游的地点 | 新疆-乌鲁木齐、新疆-吐鲁番、广东-广州…...
ICMPv6报文与邻居状态跟踪
ICMPv6报文 ICMPv6(Internet Control Message Protocol for the IPv6)是IPv6的基础协议之一。 在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息…...
Web Agent实战:浏览器自动化与数据抓取
Multi-Agent Planner靠多Agent分工协作处理复杂任务,效率高但架构较复杂。 ;等算计杂复、库据数跑、料资查(务任的助辅具工要需合适 ;溯追于便,晰清迹轨理推是点优 。数步环循制限需,升上迟延致导能可长过链理推是点缺…...
别再手动拼接Prompt了!用ChatML结构化你的大模型对话(以Llama 2/3为例)
别再手动拼接Prompt了!用ChatML结构化你的大模型对话(以Llama 2/3为例) 当你在深夜调试代码时,是否曾被这样的场景折磨:为了构造一个多轮对话的prompt,不得不反复拼接user:、assistant:等字符串,…...
别再为动态抓取发愁了!手把手教你搞定机械臂与传送带的‘异地恋’手眼标定
机械臂与传送带动态抓取:非重合视野下的高精度手眼标定实战指南 在工业自动化领域,机械臂与传送带的协同作业已成为现代生产线上的标配。然而,当相机视野与机械臂工作范围分离时,如何建立可靠的坐标转换关系成为困扰工程师的技术痛…...
安全智能:MongoDB EF Core 提供程序中的可查询加密和向量搜索牙
一、各自优势和对比 这是检索出来的数据,据说是根据第三方评测与企业数据,三款产品在代码生成质量上各有侧重: 产品 语言优势 场景亮点 核心差异 百度 Comate C核心代码质量第一;Python首生成率达92.3% SQL生成准确率提升35%&…...
.NET对象转JSON,到底有几种方式?荣
背景 在软件开发的漫长旅途中,"构建"这个词往往让人又爱又恨。爱的是,一键点击,代码变成产品,那是程序员最迷人的时刻;恨的是,维护那一堆乱糟糟的构建脚本,简直是噩梦。 在很多项目中…...
C语言逆向学习基础课 第 11 课:宏定义与位运算陷阱详解
文章目录一、第11课 宏定义与位运算陷阱 完整细化课件1.1 课程基础信息1.2 课程核心目标1.3 课程核心内容拆解(理论20分钟)1.3.1 模块一:宏定义的核心陷阱与工业级规范1. 宏定义未加括号导致的运算符优先级陷阱(最高频)…...
AI Coding越来越强,我们还有必要学Processing吗? · 创意编程质
故障表现 发现请求集群 demo 入口时卡住,并且对应 Pod 没有新的日志输出 rootce-demo-1:~# kubectl get pods -n deepflow-otel-spring-demo -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NO…...
SEGGER Embedded Studio高效开发GD32的5个隐藏技巧(含UTF-8乱码解决方案)
SEGGER Embedded Studio高效开发GD32的5个隐藏技巧(含UTF-8乱码解决方案) 在嵌入式开发领域,GD32系列MCU凭借其出色的性价比和丰富的资源赢得了众多开发者的青睐。而SEGGER Embedded Studio(简称SES)作为一款专业的集成…...
Go语言的runtime.SetBlockProfile数据
Go语言作为一门高效、简洁的编程语言,其并发模型一直是开发者关注的焦点。并发编程中难免会遇到协程阻塞的问题,这些阻塞可能由锁竞争、通道操作或系统调用等引起。为了帮助开发者定位和优化这些问题,Go语言提供了runtime.SetBlockProfile这一…...
Linux环境下高效获取SRA数据的四种方法及实战技巧
1. SRA数据库基础与数据获取逻辑 在生物信息学研究中,SRA(Sequence Read Archive)数据库堪称原始测序数据的宝库。这个由NCBI维护的数据库,就像是一个全球共享的测序数据图书馆,里面存放着来自各种测序平台(…...
