Qt手写ListView

news2024/10/6 6:43:37

创建视图:

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);//将父项加入Model

	pChildItem = 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);

效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1247953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go 语言中的 Switch 语句详解

switch语句 使用switch语句来选择要执行的多个代码块中的一个。 在Go中的switch语句类似于C、C、Java、JavaScript和PHP中的switch语句。不同之处在于它只执行匹配的case&#xff0c;因此不需要使用break语句。 单一case的switch语法 switch 表达式 { case x:// 代码块 cas…

2024年襄阳中级工程师职称评审条件及要求

想要评审襄阳市中级工程师职称的小伙伴看过来&#xff0c;襄阳人社局对于评审所需的条件及要求如下。秋禾火带大家详细来了解一下 评审范围和人员要求 评审所申报的企业必须是在襄阳市注册登记满一年以上&#xff0c;正常运作的非公有制企业&#xff08;也就是私企&#xff09…

五、双向NAT

学习防火墙之前&#xff0c;对路由交换应要有一定的认识 双向NAT1.1.基本原理1.2.NAT Inbound NAT Server1.3.域内NATNAT Server —————————————————————————————————————————————————— 双向NAT 经过前面介绍&#xff0c;…

Red Giant Trapcode Suite红巨星粒子插件合集震撼登场

无论是电影、电视剧、广告还是音乐视频&#xff0c;炫酷特效都是吸引观众眼球的重要元素。而在Adobe After Effects&#xff08;AE&#xff09;和Premiere Pro&#xff08;PR&#xff09;软件中&#xff0c;Red Giant Trapcode Suite&#xff08;红巨星粒子插件合集&#xff09…

ELK+kafka+filebeat企业内部日志分析系统

1、组件介绍 1、Elasticsearch&#xff1a; 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布…

PyQt6库和工具库QTDesigner安装与配置

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计12条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

Selenium实战指南:安装、使用技巧和JavaScript注入案例解析

背景 ​ 最近一段时间我会重新开一个关于selenium的专题&#xff0c;由浅入深的给大家讲一下selenium&#xff0c;同时回顾一下之前学的内容&#xff0c;selenium可以实现模拟登录&#xff0c;动态数据获取&#xff0c;获取动态cookie等等&#xff0c;还有可以写一些抢p的脚本…

游戏测试大揭秘,帮你轻松过关!

游戏测试可以看作是软件测试的一个分支&#xff0c;黑盒测试最基本的要求是会玩游戏。小公司会要求测试能力更加全面的员工&#xff0c;其中除了功能测试还要会性能测试&#xff0c;兼容测试&#xff0c;弱网测试&#xff0c;自动化测试等。 游戏测试是游戏开发过程中必不可少…

Markdown如何自定义字体样式:字体颜色、背景、斜体、粗体

Markdown如何自定义字体样式&#xff1a;字体颜色、背景、斜体、粗体 文章目录 Markdown如何自定义字体样式&#xff1a;字体颜色、背景、斜体、粗体前言一、字体大小二、字体颜色1. 英文字母2. 十六进制颜色值 三、字体背景色三、字体类型四、字体加粗五、字体斜体六、混合使用…

2.19 keil里面工具EventCorder使用方法

设置方法如下&#xff1a; 添加初始化代码如下&#xff1a; eventRecord.c #include "eventRecord.h" #include "usart.h" extern UART_HandleTypeDef *pcControlUart;/* RecordEvent初始化 */ void InitEventRecorder(void) {#ifdef RTE_Compiler_Even…

【免费使用】基于PaddleSeg开源项目开发的人像抠图Web API接口

基于PaddleSeg开源项目开发的人像抠图API接口&#xff0c;服务器不存储照片大家可放心使用。 1、请求接口 请求地址&#xff1a;http://apiseg.hysys.cn/predict_img 请求方式&#xff1a;POST 请求参数&#xff1a;{"image":"/9j/4AAQ..."} 参数是jso…

Leetcode—1410.HTML实体解析器【中等】

2023每日刷题&#xff08;三十八&#xff09; Leetcode—1410.HTML实体解析器 算法思想 实现代码 typedef struct entityChar {char* entity;char rechar; }entity;entity matches[] {{"&quot;", "},{"&apos;", \},{"&amp;"…

【工具使用】Keil工具的使用——常用配置介绍

Keil调试具体教程学习 目录 ​​​​​​​Keil调试具体教程学习 常用功能总结 &#xff08;2&#xff09;目标设置&#xff08;Target&#xff09; ①设置晶振频率 ②跨模块优化选项 ③微库选项 &#xff08;3&#xff09;输出设置&#xff08;Output&#xff09; ①…

【自主探索】基于 frontier_exploration 的单个机器人自主探索建图

文章目录 一、概述1、功能2、要求 二、使用方法1、用于运行演示2、用于开发人员2.1. 探索无/地图数据2.2. 使用 /map 数据进行探索 三、提供的组件1、explore_client1.1. 调用的操作1.2. 订阅主题1.3. 发布主题 2、explore_server2.1. 提供的操作2.2. 调用的操作2.3. 调用的服务…

手把手教你,怎么制作出满意的组织架构图

组织架构图在企业管理中起着重要的作用&#xff0c;它可以清晰地展示一个组织的层级结构、职责分工和工作流程。通过组织架构图&#xff0c;领导者可以更好地了解和掌握企业的人员组成和管理情况&#xff0c;帮助他们做出更明智的决策。此外&#xff0c;组织架构图也可以提高企…

首先啊骚年们我们必须先了解网络安全这个行业究竟是干啥的。

导 读 近年来&#xff0c;人工智能、5G、量子信息技术、工业互联网、大数据、云计算、物联网、虚拟现实、区块链等具有颠覆性的战略性新技术突飞猛进&#xff0c;但伴随着互联网技术的发展&#xff0c;网络安全问题也日趋多样化&#xff0c;甚至严重威胁到国家、企业&#xff…

03.依赖倒置原则(Dependence Inversion Principle)

概述 高层模块不应依赖低层模块&#xff0c;二者都应该依赖其抽象。而抽象不应依赖细节&#xff0c;细节应该依赖抽象。依赖倒置原则的中心思想其实就是面向接口编程。 相对于细节的多变性&#xff0c;抽象的东西会稳定的多&#xff0c;所以以抽象为基础搭建的架构自然也会比以…

【Tiny_CD】Tiny_CD变化检测网络详解(含python代码)

题目:TinyCD: A (Not So) Deep Learning Model For Change Detection 论文:paper 代码:code 目录 🍟 🍟1.摘要 🍗🍗 2.贡献 🍖🍖 3.网络结构

语音合成综述Speech Synthesis

一、语音合成概述 语音信号的产生分为两个阶段&#xff0c;信息编码和生理控制。首先在大脑中出现某种想要表达的想法&#xff0c;然后由大脑将其编码为具体的语言文字序列&#xff0c;及语音中可能存在的强调、重读等韵律信息。经过语言的组织&#xff0c;大脑通过控制发音器…

python中pprint()与print()

平常经常使用print()&#xff0c;今天突然看到pprint()&#xff0c;好奇查了下&#xff0c;记录。 统而言之&#xff0c;pprint()更适合打印结构化数据&#xff0c;对于可读性有很大的提升 这里有两个对象在一个arry里面&#xff0c;普通的print直接全部打印出来&#xff0c;而…