多元素控件QListWidget
使用List Widget表示一个纵向的列表,其每一个选项都可以被选中。
核心属性属性 | 说明 |
---|---|
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* 表⽰是哪个元素被删除了 |
列表中的每一个元素/每一项都被称为是一个item,更具体地来讲,是通过QListWidgetitem类表示的。
在进行插入的row参数就表示插入完毕之后新元素在第row行,把新元素插入到第几行之前。
用来表示“删除”的术语:
take、erase、remove、delete、take
信号 | 说明 |
---|---|
currentItemChanged(QListWidgetItem* current, QListWidgetItem* old) | 选中不同元素时会触发. 参数是当前选中的元素和之前选中的元素. |
currentRowChanged(int) | 选中不同元素时会触发. 参数是当前选中元素的⾏数. |
itemClicked(QListWidgetItem* item) | 点击某个元素时触发 |
itemDoubleClicked(QListWidgetItem* item) | 双击某个元素时触发 |
itemEntered(QListWidgetItem* item) | ⿏标进⼊元素时触发 |
QListWidget类
这个类表示QListWidget中的一个元素,本质上就是“文本+图标”构成的。
核心方法如下:
方法 | 说明 |
---|---|
setFont | 设置字体 |
setIcon | 设置图标 |
setHidden | 设置隐藏 |
setSizeHint | 设置尺⼨ |
setSelected | 设置是否选中 |
setText | 设置⽂本 |
setTextAlignment | 设置⽂本对⻬⽅式. |
例子:使用List Widget新增与删除元素
(1)使用Qt Designer创建出一个List Widget、俩个按钮、一个lineEdit
(2)添加ListWidget的初始元素
方法一:直接使用字符串添加
这种方式简单直接,适用于只需要添加简单文本的情况。系统会自动为添加的字符串创建一个默认的QListWidgetItem
对象。 方法二:使用QListWidgetItem 添加对象
提供了更多的灵活性,可以对创建的QListWidgetItem
进行更多的自定义设置例如,可以设置图标、字体、前景色和背景色等属性,或者设置数据与项目相关联。
方法三:
在图形化界面中,右键QListWidget选择编辑项目,就可以直接添加内容了。
如果这里初始的内容是固定的,此时使用哪种方式都是可行的。
但是如果这里的内容是不固定的,需要读取文件/读取网络来构造数据。
此时就需要代码的方式来添加。
(3)点击添加按钮新增元素
(4)点击删除按钮删除元素
(5)代码实现
#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); // 添加初始元素 ui->listWidget->addItem("C++"); ui->listWidget->addItem("Python"); ui->listWidget->addItem("Java");// //使用QlistWidget 添加初始元素// ui->listWidget->addItem(new QListWidgetItem("C++"));// ui->listWidget->addItem(new QListWidgetItem("Python"));// ui->listWidget->addItem(new QListWidgetItem("Java"));}Widget::~Widget(){ delete ui;}void Widget::on_pushButton_add_clicked(){ // 获取输入框里的内容 const QString& text = ui->lineEdit->text(); // 添加到 QListItem 中 ui->listWidget->addItem(text);}void Widget::on_pushButton_sub_clicked(){ // 获取QListItem 的行数 int row = ui->listWidget->currentRow(); // 按照行数删除元素 if(row < 0) return; ui->listWidget->takeItem(row);}