Qt在ListWidget中添加自定义ListItem对象 - sbw Blog

Qt在ListWidget中添加自定义ListItem对象

来源: 石博文博客 | 浏览: 25492 | 评论: 26 发表时间: 2014-03-04

Qt中的QListWidget可以实现一个列表,比如网页上经常出现的下拉列表框,其中一行就是一个ListItem,在添加时,常用的函数是QListWidget::addItem(QListWidgetItem * item),但这样只能添加QListWidgetItem这样的对象,如果想到像QQ等软件使用自定义的ListItem,一个简单的方法是自定义一个QWidget,然后使用QListWidget::setItemWidget(QListWidgetItem * item, QWidget * widget)来设置它的显示widget.



自定义一个widget

首先,自定义了一个QWidget,作为QListWidgetItem的子元素,所有的布局都在这个widget中完成,它便是后来显示的每个小条目.


添加自定义Item

首先,添加一个QListWidgetItem,然后为其设置Widget为我们自定义的Widget:


下面是在Linux上和Android的显示效果:

Qt在ListWidget中添加自定义ListItem对象
示例代码下载


  • 声明: 评论属于其发表者所有,不代表本站的观点和立场.
  • 塑料托板 回复该留言 时间: 2014-03-06

    不错 学习了

  • 路人甲 回复该留言 时间: 2014-12-25

    谢谢分享,找了好久才找到这个例子

  • bykege 回复该留言 时间: 2015-09-08

    ui->listWidget->setItemWidget(listItem1, custom1); 这句代码报错,显示无法从“const QString”转换为“QListWidgetItem

  • bykege 回复该留言 时间: 2015-09-09

    非常有用的帖子!!!感谢

  • 路人甲 回复该留言 时间: 2015-09-10

    listItem1 因该是QListWidgetItem类型的,你可能类型创建错误了

  • 路人甲 回复该留言 时间: 2015-10-13

    精简,直接,了得,非常好! 非常感谢! 本来一直想用QListView来着,没有找到自定义item的,后面找到这个,哈哈这个才是我要的!!![color: Red][/color]

  • 路人甲 回复该留言 时间: 2015-10-16

    问下,如果要动态修改咋办? 比如里面的第二项里面的 text2 我要修改成 你好 难道是先删除这一整个项,然后插入一个新的?

  • 石博文 回复该留言 时间: 2015-10-16

    修改你自定义的那个 widget 的数据就可以了呀

  • 路人甲 回复该留言 时间: 2016-02-11

    如何移除这个自定义控件呢?

  • 路人甲 回复该留言 时间: 2016-04-17

    直接 remove,QListWidget会帮你删除的,不过你在外面不能在持有对象的指针了,不然就。。。

  • 路人甲 回复该留言 时间: 2017-01-09

    博主 你好, 我在使用 QListWidget 的时候遇到一些问题: 首先我使用的是 mac 下的 qt 开发环境, 使用自定义的 item 时, 选中不会高亮了, itemEntered的判定区域也是不对的, 最主要的是 自定义的 widget 的效果(背景色效果)都无法显示出来. 请问一下, 这个是什么问题, 是QListWidget在 mac 环境下不支持的问题吗?

  • 路人甲 回复该留言 时间: 2017-12-20

    博主,我要怎么给列表添加第二项,按这个我添加了表单的一个小项目但是不能additem第二行

  • 路人甲 回复该留言 时间: 2022-04-12

    可以水平添加吗?

已有 13 位网友发表了一针见血的评论,你还等什么?
  • 昵称: *
  • 邮箱:
  • 网址:
  • 记住我的信息
  • Color
  • Red
  • Blue
  • Code
  • bash
  • cpp
  • css
  • java
  • js
  • perl
  • php
  • python
  • ruby
  • sql
  • xml