【Qt】多元素控件QListWidget
大柏怎么被偷了 2024-09-04 15:35:01 阅读 100
多元素控件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的初始元素
方法一:直接使用字符串添加
这种方式简单直接,适用于只需要添加简单文本的情况。系统会自动为添加的字符串创建一个默认的 <code>QListWidgetItem 对象。
方法二:使用QListWidgetItem 添加对象
提供了更多的灵活性,可以对创建的 <code>QListWidgetItem 进行更多的自定义设置例如,可以设置图标、字体、前景色和背景色等属性,或者设置数据与项目相关联。
方法三:
在图形化界面中,右键QListWidget选择编辑项目,就可以直接添加内容了。
如果这里初始的内容是固定的,此时使用哪种方式都是可行的。
但是如果这里的内容是不固定的,需要读取文件/读取网络来构造数据。
此时就需要代码的方式来添加。
(3)点击添加按钮新增元素
(4)点击删除按钮删除元素
(5)代码实现
#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);
}
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。