qt QListView详解
1、概述
QListView 是 Qt 框架中的一个视图类,用于展示模型中的数据。它基于 QAbstractItemView,支持多种视图模式,如列表视图(List View)、图标视图(Icon View)等。QListView 是模型/视图框架的一部分,通常与 QStandardItemModel 或从 QAbstractItemModel 派生的自定义模型一起使用。在这种模型-视图架构中,数据存储在模型中,而视图负责呈现该数据。QListView 提供了灵活的显示模式和高度的自定义能力,使得开发者可以根据需要选择最适合的呈现方式。
2、重要方法
QListView 提供了多种方法来管理和展示数据,以下是一些重要的方法:
- setSelectionMode:设置选择模式,如单选(SingleSelection)、多选(MultiSelection)等。
- setEditTriggers:设置编辑触发器,决定何时可以编辑列表项。
- setFocusPolicy:设置焦点策略,决定视图是否可以接受焦点。
- setModel:设置数据模型,将数据模型与视图关联起来。
- viewMode 和 setViewMode:获取和设置视图模式,如列表模式(ListMode)和图标模式(IconMode)。
- setGridSize:在图标模式下设置网格大小。
此外,QListView 还支持通过委托(delegates)自定义视图中项的外观和交互方式,这通常通过重写 QStyledItemDelegate 类的相关方法来实现。
3、重要信号
QListView 发射多种信号来响应用户的操作,以下是一些重要的信号:
- clicked:单击某项时发射此信号。
- doubleClicked:双击某项时发射此信号。
- activated:当用户激活某个项目时发射此信号。
- entered:当鼠标光标进入某个项目时发射此信号。
- iconSizeChanged:在视图可见时设置图标大小时发射此信号。
- indexesMoved:在视图中移动索引时发射此信号。
- pressed:按下鼠标按钮时发射此信号。
- viewportEntered:当鼠标光标进入视图时发射此信号。
这些信号允许开发者在用户与 QListView 交互时执行特定的操作。
4、视图模式和布局方向
ViewMode
QListView::ViewMode 枚举定义了视图模式:
- QListView::ListMode:列表模式。
- QListView::IconMode:图标模式。
Flow
QListView::Flow枚举定义了项目布局方向:
- QListView::LeftToRight:从左到右布局。
- QListView::TopToBottom:从上到下布局。
#include <QApplication>
#include <QListView>
#include <QStandardItemModel>
#include <QDebug> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建一个 QListView 实例 QListView listView; // 创建一个模型并添加一些数据 QStandardItemModel model; for (int i = 0; i < 10; ++i) { QStandardItem *item = new QStandardItem(QString("Item %1").arg(i)); item->setCheckable(true); // 显示复选框 item->setCheckState(Qt::Unchecked); // 设置复选框状态 model.appendRow(item); } // 将模型设置给 QListView listView.setModel(&model); // 设置选择模式为单选模式 listView.setSelectionMode(QAbstractItemView::SingleSelection); // 连接 clicked 信号到槽函数 QObject::connect(&listView, &QListView::clicked, [&](const QModelIndex &index) { QVariant value = model.data(index, Qt::DisplayRole); qDebug() << "Clicked item:" << value.toString(); }); // 显示 QListView listView.show(); return app.exec();
}


觉得有帮助的话,打赏一下呗。。

相关文章:
qt QListView详解
1、概述 QListView 是 Qt 框架中的一个视图类,用于展示模型中的数据。它基于 QAbstractItemView,支持多种视图模式,如列表视图(List View)、图标视图(Icon View)等。QListView 是模型/视图框架…...
287. 寻找重复数
目录 题目我的解法解法 题目 给定一个包含 n 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。 你设计的解决方案…...
2024年最受欢迎的编程语言
No.1 JavaScript / TypeScript 自从创建第一个网站以使其动态化以来,JavaScript多年来一直受到欢迎。话虽如此,目前JavaScript是整个市场上需求量最大的编程语言。此外,TypeScript(一种具有类型安全性的JavaScript超集࿰…...
C++ 线程初始化编译报错
这是一个很简单的开启一个线程, 用于演示一个线程和生命周期之间的错误,但是还没有把这个错误暴露出来, 就遇见了一个编译问题. 线程中执行指定逻辑的代码 线程的执行方法, 声明写在了ThreadRun.h 实现写在 ThreadRun.cpp中. class ThreadRun { public: void func(); };void T…...
[MySQL]视图
视图是什么 视图(View)是一种虚拟存在的表。视图中的数据,来自定义视图的查询语句中,使用的表,并且是在使用视图时动态生成的。 简单讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在…...
Windows Server2012 R2搭建NFS服务器
正文共:1024 字 23 图,预估阅读时间:1 分钟 在测试vCenter的集群操作时,出现了共享vSAN错误的问题,导致无法继续。我也只好先创建一个共享NFS(Network File System,网络文件系统)存储…...
SQL题:使用hive查询各类型专利top 10申请人,以及对应的专利申请数
一、题目以及介绍 题目介绍: 1、表名:t_patent_detail (专利明细表) 2、表字段:专利号(patent_id)、专利名称(patent_name)、专利类型(patent_type)、申请时间(aplly_date)、授权时间(authorize_date)、申请人(apply_…...
使用sealos部署的集群在部署metrics-server时日志x509
1、下载文件并进行部署 wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml2、进行部署 kubectl apply -f components.yaml3、发现问题 pod容器已经启动但是健康检查没有通过 kubectl get pod -n kube-system metrics-server…...
WPF怎么通过RestSharp向后端发请求
1.下载RestSharpNuGet包 2.请求类和响应类 public class ApiRequest {/// <summary>/// 请求地址/// </summary>public string Route { get; set; }/// <summary>/// 请求方式/// </summary>public Method Method { get; set; }/// <summary>//…...
promise的用法以及注意事项,看了这篇你就会了
一,为什么要使用promise,ta能解决那些问题? Promise 是异步编程的一种解决方案: 从语法上讲,Promise是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺,承诺它过一段时间…...
vue3如何使用pinia设置全局状态,附常见面试题
1. stores/index.ts 文件 在 index.ts 中创建 store 实例并封装了注册逻辑,这样可以方便地将整个 Pinia 实例注册到 Vue 应用中。代码如下: import type { App } from vue import { createPinia } from piniaconst store createPinia()// 全局注册 st…...
lerna+umi ‘max‘ 不是内部或外部命令,也不是可运行的程序
lerna不管version7还是老版都报 $ max setup max 不是内部或外部命令,也不是可运行的程序 或批处理文件。 error Command failed with exit code 1. 这点问题是因为lerna没编译完成; 解决: 首先我们在lerna packages 里用cli 安装umi;然后…...
美格智能5G车规级通信模组: 5G+C-V2X连接汽车通信未来十年
自2019年5G牌照发放开始,经过五年发展,我国5G在基础设施建设、用户规模、创新应用等方面均取得了显著成绩,5G网络建设也即将从基础的大范围覆盖向各产业融合的全场景应用转变。工业和信息化部数据显示,5G行业应用已融入76个国民经…...
「C/C++」C/C++ 指针篇 之 指针运算
✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...
计算机网络网络层笔记
互联网提供的两种服务 1.虚电路服务 2.数据报服务 需要记住的是现在只用第二种也就是数据报服务 网际协议IP 物理层的中断系统:转发器(hub) 链路层的中断系统:交换机 网络层的中断系统:路由器 网络层以上:网关 如上图所示,网关是用来访问其他的网段的一个接口,网关的地…...
长亭那个检测能力超强的 WAF,出免费版啦
告诉你们一个震撼人心的消息,那个检测能力超强的 WAF——长亭雷池,他推出免费社区版啦,体验地址见文末。 八年前我刚从学校毕业,在腾讯做安全研究,看到宇森在 BlackHat 上演讲的议题 《永别了,SQL 注入》 …...
rabbitMQ RabbitTemplate 发送消息
消息发送确认机制 消息发送确认机制:消息由producer发送后,确认其是否到达broker,又是否被exchange转发至对应queue的机制 该机制分为两部分:producer---broker,exchange---queue 前者的实现依靠ConfirmCallback机制…...
本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。
公众号 后端学习指南 本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。 1、说说跨平台性 我们希望编写好的代码和程序,最好可以在任意平台和环境下运行,而不需要根据不同的平台,编写不同的代码。 比如,我编写的一个博客管理系统,我希望它可以在windo…...
C语言文件基础概念的理解(一)
文件基础概念 为什么有文件? 我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存…...
C++ lambda 匿名函数
看了明仕强老师的课程,C匿名函数也可以很简单 下面请看示例代码: /* lambda表达式学习,测试主函数 */#include <iostream>using namespace std;int main() {printf("Lambda test Demo:\n");//值捕获,值捕获的时候不能修…...
深入浅出:拆解Xilinx ERNIC IP的硬件架构,看RoCE v2如何卸载CPU
深入浅出:拆解Xilinx ERNIC IP的硬件架构,看RoCE v2如何卸载CPU 在数据中心和高性能计算领域,RDMA(远程直接内存访问)技术正成为突破网络性能瓶颈的关键。Xilinx的ERNIC IP核作为RoCE v2协议的硬件实现,通过…...
别再自己造轮子了!手把手教你用LwRB环形缓冲区搞定嵌入式数据流(附DMA零拷贝实战)
嵌入式数据流处理的终极方案:LwRB环形缓冲区深度解析与DMA实战 在嵌入式开发中,数据流处理如同空气般无处不在却又容易被忽视。从UART接收到的传感器数据,到SPI传输的图像信息,再到I2C收集的设备状态,这些数据流的处理…...
CE修改器进阶:通过内存结构分析,破解‘敌我同源’的游戏逻辑(以浮点数血量为例)
CE修改器进阶:内存结构分析与游戏逻辑破解实战 游戏修改器一直是技术爱好者探索虚拟世界底层逻辑的利器。在众多工具中,Cheat Engine(简称CE)以其强大的内存扫描和调试功能脱颖而出,成为逆向工程领域的瑞士军刀。今天&…...
从‘浴盆曲线’到加速测试:拆解企业级SSD如何做到MTBF 200万小时
从‘浴盆曲线’到加速测试:拆解企业级SSD如何做到MTBF 200万小时 当企业技术决策者面对存储方案选型时,一个看似简单的参数常引发激烈讨论:为什么同样容量的企业级SSD价格是消费级的3-5倍?答案藏在MTBF(Mean Time Betw…...
Angular-dragdrop与Bootstrap集成:构建响应式拖放界面的完美方案
Angular-dragdrop与Bootstrap集成:构建响应式拖放界面的完美方案 【免费下载链接】angular-dragdrop Implementing jQueryUI Drag and Drop functionality in AngularJS (with Animation) is easier than ever 项目地址: https://gitcode.com/gh_mirrors/an/angul…...
SegFormer凭什么不用位置编码?深入拆解Mix-FFN与重叠Patch Merging的设计哲学
SegFormer革命性设计:为何抛弃位置编码仍能称霸语义分割? 在视觉Transformer的浪潮中,SegFormer以其独特的设计哲学脱颖而出——它大胆摒弃了传统Transformer中视为标配的位置编码(Positional Encoding),却…...
3步打造高效macOS菜单栏:Hidden Bar深度使用指南
3步打造高效macOS菜单栏:Hidden Bar深度使用指南 【免费下载链接】hidden An ultra-light MacOS utility that helps hide menu bar icons 项目地址: https://gitcode.com/gh_mirrors/hi/hidden 作为macOS用户,你是否曾为菜单栏图标拥挤不堪而烦恼…...
从Claude Code到AI编程全家桶:Cursor、OpenClaw、Codex、Gemini等主流工具深度横评
🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...
别再死记硬背ELMo、GPT、BERT的区别了!一张图带你搞懂它们的核心差异与适用场景
一图胜千言:ELMo、GPT、BERT技术差异与实战选型指南 刚接触NLP时,我也曾被各种预训练模型绕得头晕眼花——它们看起来都能处理文本,但面试官一问"为什么用BERT不用GPT"就瞬间语塞。直到我把这些模型拆解成汽车零件,才真…...
华为昇腾Atlas200边缘设备开箱即用指南:从CANN环境到YOLOv8模型部署的保姆级避坑教程
华为昇腾Atlas200边缘设备实战:YOLOv8模型部署全流程避坑指南 第一次拿到华为昇腾Atlas200边缘计算设备时,那种既兴奋又忐忑的心情记忆犹新。作为一款专为AI推理设计的边缘设备,Atlas200凭借其强大的算力和紧凑的体型,在智能安防…...
