65常用控件_QListWidget的使用
目录
代码示例:使用ListWidget
List Widget
使⽤ QListWidget 能够显⽰⼀个纵向的列表. 形如:

每个选项都可以被选中.
列表中的每个元素/每一项就称为是一个Item
更具体的说,通过QListWidgetItem类表示的~~
核⼼属性
属性 | 说明 |
---|---|
currentRow | 当前被选中的是第几行 |
count | 一共有多少行 |
sortingEnabled | 是否允许排序 |
isWrapping | 是否允许换行 |
itemAlignment | 元素的对齐方式 |
selectRectVisible | 被选中的元素矩形是否可见 |
spacing | 元素之间的间隔 |
核⼼⽅法
方法 | 说明 |
---|---|
addItem(const QString& label) | 列表中添加元素 |
addItem(QListWidgetItem *item) | 列表中添加元素 |
currentItem() | 返回 QListWidgetItem* 表示当前选中的元素 |
setCurrentItem(QListWidgetItem* item) | 设置选中哪个元素 |
setCurrentRow(int row) | 设置选中第几行的元素 |
insertItem(const QString& label, int row) | 在指定的位置插入元素 |
insertItem(QListWidgetItem *item, int row) | 在指定的位置插入元素 |
item(int row) | 返回 QListWidgetItem* 表示第 row 行的元素 |
takeItem(int row) | 删除指定行的元素,返回 QListWidgetItem* 表示是哪个元素被删除了 |
核⼼信号
方法 | 说明 |
---|---|
currentItemChanged(QListWidgetItem* current, QListWidgetItem* old) | 选中不同元素时会触发,参数是当前选中的元素和之前选中的元素 |
currentRowChanged(int) | 选中不同元素时会触发,参数是当前选中元素的行数 |
itemClicked(QListWidgetItem* item) | 点击某个元素时触发 |
itemDoubleClicked(QListWidgetItem* item) | 双击某个元素时触发 |
itemEntered(QListWidgetItem* item) | 鼠标进入元素时触发 |
在上述介绍中, 涉及到⼀个关键的类, QListWidgetItem .
这个类表⽰ QListWidget 中的⼀个元素.
核⼼⽅法如下, 本质上就是⼀个 "⽂本+图标" 构成的
方法 | 说明 |
---|---|
setFont | 设置字体 |
setIcon | 设置图标 |
setHidden | 设置隐藏 |
setSizeHint | 设置尺寸 |
setSelected | 设置是否选中 |
setText | 设置文本 |
setTextAlignment | 设置文本对齐方式 |
代码示例:使用ListWidget
1)在界面上创建一个ListView,右键=>变形为=>ListWidget,再创建一个lineEdit和两个按钮.
注意:ListWidget是ListView的子类,功能比ListView更丰富.咱们使用
ListWidget即可.
2) 编写 widget.cpp, 在构造函数中添加初始元素

3) 编写 listWidget 的 slot 函数
• 此处需要判定 current 和 previous ⾮空. 初始情况下是没有元素选中的, 就导致这俩指针可
能是 NULL


这⾥需要给 widget.h 前⾯加上 #include <QListWidgetItem>
4) 编写按钮的 slot 函数
5) 执⾏程序, 观察效果. 可以新增元素, 选中元素, 删除元素.

此处的row参数就表示插入完毕之后新的元素在第几行.
把新元素插入到第几行之前~~
你超过了第二的选手,你是第几??
takeltem
take 也是用来表示"删除”术语
erase
remove
delete
take
图形化界面中,右键QListWidget
选择编辑项目~就可以直接添加内容
如果这里初始内容是固定的,此时你通过哪种方式来初始化都可以
如果这里的内容是不固定的,要通过读取文件/读取网络来构造数据~~
就需要通过代码的方式来添加了~~