QT------常用控件:qtlistwidget和qtlistview

2023-11-07

qtlistwidget和qtlistview都是用于在界面成行/成列的显示数据的;

两者的区别在于:

1、qtlistview可以用使用model,更便于动态添加数据,而qtlistwidget只能一条一条的增加列表项进行显示数据(使用QStringList进行批量增加数据,但很难实现想要的动态添加数据的效果)

2、QListView继承于QAbstractItemView,QListWidget继承于QListView

qtlistwidget

1、添加列表项

使用QListWidgetItem依次添加item:

使用 QStringList列表批量添加列表项:

 2、删除数据

删除单行数据:

currentItem获取到当前listwidget选中的item

在listwidget需要实现删除多行数据之前要实现item能被选中,且listwidget支持多选操作,后面会讲解item选中与listwidget支持多行选中的操作。

删除多行数据:

 

 删除所有的数据:

 3、插入子列表

添加样式窗口:

添加自定义窗口类:

cpp文件

 ui设计:

 listwidget使用:

 右键拓展菜单项:

先设置自定义菜单策略

 添加菜单项(实现customContextMenuRequested的槽函数):

 

 使用label控件显示选中的项目文本与序号:

在有些项目要求中需要显示选中的项目的序号与文本进行提醒(实现currentRowChanged的槽函数,每选中一个新的行便会发送一次信号进行显示)

 

QListView

  在  QListView中是无法使用  QListWidgetItem 和QStringList类进行添加列表项目,自己可以试验一下哦,在QListView中使用QStringListModel或者继承QAbstractListModel类生成自定义的数据模型,在这里就不自定义数据模型了,使用QStringListModel来做一些简单的数据示范,感兴趣的话可以自己上网搜索一下自定义数据模型的生成与使用。

1、添加列表项

使用QStringListModel作为数据模型添加到QListView中去(这里还未设置数据显示代理,所以显示的是默认的代理样式)

 2、删除数据(在QListView中由于数据源都来自于model,所以这些实验所有的数据改变都会同步到model中)

删除单行数据:

 删除多行数据

在对数据源进行更新的时候要从后往前删除,因为从前往后删除会导致数据的序列号发生变化,删除上面的一个元素之后下面的元素会顺位往前走一位,那么,后续的数据源与列表项序号无法对应

清空数据

 4、使用代理的item代理样式类

 .h文件:继承QStyledItemDelegate类重写paint进行图形绘制

 cpp文件

 name :就是刚刚加入的strList内的数据

使用时踩过的坑:

多选与单选

qtlistwidget中都实现了多行删除的功能,其基础是item与list都支持多选。在使用qtlistwidget的过程中如果是使用QListWidgetItem添加子项的话,要让item支持选中功能

item支持选中:

 qtlistwidget和qtlistview支持选中:

拖拽:

在使用自定义的窗口样式进行添加项目时,使用setAcceptDrops设置为false且窗口样式类this->setWindowFlags(Qt::FramelessWindowHint);之后发现子项目还是可以拖拽,改动了很多个地方,结果发现将视图模式设置成了IConmodel,目前还不知道为啥设置为视图模式就可以拖拽,但是不为视图模式之后就禁止掉拖拽了(ui->listWidget->setViewMode(QListView::IconMode))

 

2、常用属性设置

qtlistwidget常用属性设置:

重要属性:setViewMode可将item设置为图标模式(图标在上,文字在下);一般情况下如果不特意对其进行设置的话图片在左,文字在右

item属性设置--

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT------常用控件:qtlistwidget和qtlistview 的相关文章

随机推荐

  • 数据结构---快速排序

    快速排序 分治法思想 基准元素的选择 元素交换 双边循环法 JAVA实现 单边循环法 JAVA实现 快速排序也是从冒泡排序演化而来 使用了 分治法 快的原因 快速排序和冒泡排序共同点 通过元素之间的比较和交换位置来达到排序的目的 快速排序和
  • elasticsearch-数据聚合

    目录 介绍 实际操作 DSL实现Metrics聚合 嵌套聚合 RestClient实现聚合 以酒店品牌为例 实现对酒店品牌 城市 星级的过滤 补6 20 32条消息 Elasticsearch 聚合查询 aggs 龙源lll的博客 CSDN
  • 成pmo了(几年前帖子,私密变公开后时间就变了)

    哈哈 我还没转正 也没项目 只是做产品 估计就和小学的语文课代表一样
  • border 颜色渐变

    div style border right 1px dashed fff background none width 577px div style font size 16px background color fff div div
  • C语言文本文件与二进制文件转换

    本程序要自己创建个文本格式的输入文件a1 txt 编译后能将文本文件前255字节以内的字符转换成相应的AscII码值的二进制表示 并存入输出文件a2 txt中 然后再将二进制文件还原并存入a3 txt文件 实现文件之间的转换 具体代码如下
  • vue项目cdn加速,减少webpack打包体积

    在webpack中使用cdn加速优化 减少打包体积 减少用户访问时间 文章目录 在webpack中使用cdn加速优化 减少打包体积 减少用户访问时间 1 引入cdn资源 2 在webpack基础配置文件中加入externals配置 打包 编
  • Java动态追踪技术探究

    Java动态追踪技术是指在Java应用程序运行过程中 通过监控和记录方法调用 异常 性能指标等信息 以便于分析和排查问题 优化性能 或进行安全审计等目的的技术手段 在Java开发和运维中 动态追踪技术起到了重要的作用 能够帮助开发人员和运维
  • idea中maven找不到本地仓库jar包_Maven 的这 7 个问题你思考过没有?

    专注于Java领域优质技术 欢迎关注 作者 张丰哲 在如今的互联网项目开发当中 特别是Java领域 可以说Maven随处可见 Maven的仓库管理 依赖管理 继承和聚合等特性为项目的构建提供了一整套完善的解决方案 可以说如果你搞不懂Mave
  • 自我理解:精度(precision)和召回(recall)

    1 精度 precision 精度是用于评估分类模型的一个重要指标 它反映了模型预测为正例的样本中 实际真正为正例样本的比例 注 正例样本指在二分类问题中 被标注为正类的样本 例如 在垃圾邮件分类任务中 正例样本就是真实的垃圾邮件 精度的计
  • 大学生团体天梯赛(第三届)

    题目地址 天梯赛 include
  • 树莓派LINUX内核移植

    参考博文 https editor csdn net md not checkout 1 articleId 109006969 树莓派linux内核下载地址 https github com raspberryPi 需要下载内核的版本可以
  • Hadoop的搭建,VmwareWorkstation 16pro + Ubuntu18.04.1

    文章目录 前言 一 VmwareWorkstation 16pro安装Ubuntu18 04 1 二 Ubuntu的基础配置 1 设置国内镜像源 2 下载安装Vmware Tools 三 安装Hadoop 总结 前言 Hadoop的搭建过程
  • PyQt编程实战:画出QScrollArea的scrollAreaWidgetContents内容部署层的范围矩形

    老猿Python博文目录 专栏 使用PyQt开发图形界面Python应用 老猿Python博客地址 一 引言 在 PyQt Python Qt 学习随笔 QScrollArea滚动区域详解 介绍了滚动区域的展现层 也称框架层 和内容部署层
  • python的格式化输出

    python格式化输出 被称为格式化操作符 专门用于处理字符串中的格式 包含 的字符串 被称为格式化字符串 和不同的字符串连用 不同类型的数据 需要使用不同的格式化字符 格式化字符 含义 s 字符串 d 有符号十进制整数 06d不是输出的整
  • iOS开发之 __block 与 __weak的区别理解

    资料来源1 资料来源2 block对象在block中是可以被修改 重新赋值的 使用了 weak修饰符的对象 作用等同于定义为weak的property 自然不会导致循环引用问题 因为苹果文档已经说的很清楚 当原对象没有任何强引用的时候 弱引
  • Springboot 启动过程二

    用于源码分析的代码 Github 接着启动过程一中的代码 继续debug 这一篇主要看new SpringApplication primarySources 的代码 首先还是列出问题 带着问题去看源码收获也会多些 待解答的问题 这段代码的
  • 【vcruntime140.dll文件下载】vcruntime140.dll丢失的解决方法

    vcruntime140 dll文件对一些电脑软件 电脑游戏等程序的正常运行起到关键性作用 对于弹出缺少此类文件的弹窗 用户们很多时候也摸不着头脑 程序明明上次都能正常运行 突然就弹出缺少vcruntime140 dll文件的提醒窗口 通过
  • 最详细、最仔细、最清晰的几道python习题及答案(建议收藏哦)

    名字 阿玥的小东东 学习 python c 主页 没了 今天阿玥带大家来看看更详细的python的练习题 目录 1 在python中 list tuple dict set有什么区别 主要应用在什么样的场景
  • 玩转Nginx日志

    目录标题 Nginx日志 nginx conf nginx日志切割 2 设置linux定时任务 Nginx日志 nginx conf user nobody worker processes 1 error log logs error l
  • QT------常用控件:qtlistwidget和qtlistview

    qtlistwidget和qtlistview都是用于在界面成行 成列的显示数据的 两者的区别在于 1 qtlistview可以用使用model 更便于动态添加数据 而qtlistwidget只能一条一条的增加列表项进行显示数据 使用QSt