QListWedget控件使用指南

QListWedget公共函数

函数签名功能描述
QListWidget(QWidget *parent = nullptr)构造函数,创建一个QListWidget对象,可指定父部件(默认为nullptr)。
virtual ~QListWidget()虚析构函数,释放QListWidget对象及其资源。
void addItem(QListWidgetItem *item)向列表末尾添加一个已有的QListWidgetItem项。
void addItem(const QString &label)创建一个新项(QListWidgetItem)并添加至列表末尾,文本内容为label
void addItems(const QStringList &labels)批量创建新项并添加至列表末尾,文本内容为labels列表中的每个字符串。
void closePersistentEditor(QListWidgetItem *item)关闭与指定项关联的持久编辑器(persistent editor)。
int count() const返回列表中项的总数。
QListWidgetItem *currentItem() const返回当前选中的项(若未选中则返回nullptr)。
int currentRow() const返回当前选中项的行号(从0开始计数,无选中项时返回-1)。
void editItem(QListWidgetItem *item)触发指定项的编辑模式(例如用户双击后的编辑状态)。
QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) const根据text和匹配标志flags查找匹配的项,返回结果列表。
QModelIndex indexFromItem(const QListWidgetItem *item) const返回给定项的模型索引(QModelIndex),用于模型/视图操作。
void insertItem(int row, QListWidgetItem *item)在指定行row插入一个已有的项。
void insertItem(int row, const QString &label)在指定行row创建一个新项并插入,文本内容为label
void insertItems(int row, const QStringList &labels)在指定行row插入多个新项,文本内容为labels列表中的每个字符串。
bool isPersistentEditorOpen(QListWidgetItem *item) const检查指定项是否已打开持久编辑器,返回true表示已打开。
bool isSortingEnabled() const返回是否启用了自动排序功能(true表示启用)。
QListWidgetItem *item(int row) const返回指定行row的项(若行号无效返回nullptr)。
QListWidgetItem *itemAt(const QPoint &p) const返回位于坐标点p处的项(基于列表视口的坐标系)。
QListWidgetItem *itemAt(int x, int y) const返回位于坐标(x, y)处的项(基于列表视口的坐标系)。
QListWidgetItem *itemFromIndex(const QModelIndex &index) const从模型索引index获取对应的项。
QWidget *itemWidget(QListWidgetItem *item) const返回与指定项关联的自定义部件(若未设置返回nullptr)。
QList<QListWidgetItem *> items(const QMimeData *data) const从拖放操作的MIME数据data中解析出关联的项列表(用于拖放事件处理)。
void openPersistentEditor(QListWidgetItem *item)为指定项打开持久编辑器(编辑器将一直显示,直到手动关闭)。
void removeItemWidget(QListWidgetItem *item)移除与指定项关联的自定义部件。
int row(const QListWidgetItem *item) const返回指定项的行号(从0开始计数,若项不存在返回-1)。
QList<QListWidgetItem *> selectedItems() const返回所有当前选中的项的列表。
void setCurrentItem(QListWidgetItem *item)设置指定项为当前选中项。
void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command)设置指定项为当前选中项,并使用command标志控制选择行为(如选中、切换等)。
void setCurrentRow(int row)设置指定行row为当前选中行。
void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command)设置指定行row为当前选中行,并使用command标志控制选择行为。
void setItemWidget(QListWidgetItem *item, QWidget *widget)为指定项设置自定义部件widget(覆盖项的默认显示方式)。
void setSortingEnabled(bool enable)启用或禁用自动排序功能(enabletrue时,添加项会自动按排序规则插入)。
void sortItems(Qt::SortOrder order = Qt::AscendingOrder)按指定顺序(升序或降序)对所有项进行排序。
QListWidgetItem *takeItem(int row)移除并返回指定行row的项(项不会被删除,可重新插入到其他位置)。
QRect visualItemRect(const QListWidgetItem *item) const返回指定项在列表视口中的可视区域矩形(坐标和尺寸)。

 QListWedget信号

信号签名触发条件与功能描述
void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)当当前选中项发生变化时触发。current为新的当前项,previous为之前的当前项(可能为nullptr)。
void currentRowChanged(int currentRow)当当前选中项的行号发生变化时触发。currentRow为新的行号(无选中项时为-1)。
void currentTextChanged(const QString &currentText)当当前选中项的文本发生变化时触发。currentText为新的文本内容(无选中项时为空字符串)。
void itemActivated(QListWidgetItem *item)当用户激活某个项(如双击或按回车键)时触发。item为被激活的项。
void itemChanged(QListWidgetItem *item)当项的内容(如文本、图标等)被修改时触发。item为被修改的项。
void itemClicked(QListWidgetItem *item)当用户单击某个项时触发。item为被点击的项。
void itemDoubleClicked(QListWidgetItem *item)当用户双击某个项时触发。item为被双击的项。
void itemEntered(QListWidgetItem *item)当鼠标光标进入某个项的可视区域时触发(通常用于悬停效果)。item为对应的项。
void itemPressed(QListWidgetItem *item)当用户按下鼠标按键(未释放)在某个项上时触发。item为被按下的项。
void itemSelectionChanged()当选中项的集合发生变化(如选中、取消选中或切换)时触发。此信号无参数。

 QListWidgetItem函数

函数签名功能描述
QListWidgetItem(QListWidget *parent = nullptr, int type = Type)构造函数,创建一个空项,可指定父列表控件parent和项类型type(默认为Type)。
QListWidgetItem(const QString &text, QListWidget *parent = nullptr, int type = Type)构造函数,创建带有文本text的项,可指定父列表控件和类型。
QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent = nullptr, int type = Type)构造函数,创建带有图标icon和文本text的项,可指定父列表控件和类型。
QListWidgetItem(const QListWidgetItem &other)拷贝构造函数,复制另一个项other的属性。
virtual ~QListWidgetItem()虚析构函数,释放项的资源。
QBrush background() const返回项的背景画刷(颜色或渐变)。
Qt::CheckState checkState() const返回项的勾选状态(如未选中、部分选中、完全选中)。
virtual QListWidgetItem *clone() const虚函数,创建并返回当前项的副本。
virtual QVariant data(int role) const返回项中指定角色role(如文本、图标、对齐等)对应的数据。
Qt::ItemFlags flags() const返回项的标志(如是否可选中、可编辑等)。
QFont font() const返回项的字体。
QBrush foreground() const返回项的前景画刷(文本颜色)。
QIcon icon() const返回项的图标。
bool isHidden() const返回项是否被隐藏。
bool isSelected() const返回项是否被选中。
QListWidget *listWidget() const返回项所属的父列表控件(若无则返回nullptr)。
virtual void read(QDataStream &in)从数据流in中读取项的内容(用于序列化)。
void setBackground(const QBrush &brush)设置项的背景画刷。
void setCheckState(Qt::CheckState state)设置项的勾选状态。
virtual void setData(int role, const QVariant &value)设置项中指定角色role对应的数据为value
void setFlags(Qt::ItemFlags flags)设置项的标志(如禁用、可拖拽等)。
void setFont(const QFont &font)设置项的字体。
void setForeground(const QBrush &brush)设置项的前景画刷(文本颜色)。
void setHidden(bool hide)设置是否隐藏项(hidetrue时隐藏)。
void setIcon(const QIcon &icon)设置项的图标。
void setSelected(bool select)设置项是否被选中。
void setSizeHint(const QSize &size)设置项的推荐显示尺寸。
void setStatusTip(const QString &statusTip)设置项的状态栏提示文本(鼠标悬停时显示在状态栏)。
void setText(const QString &text)设置项的显示文本。
(since 6.4) void setTextAlignment(Qt::Alignment alignment)(Qt 6.4新增) 设置项的文本对齐方式(如左对齐、居中对齐)。
void setToolTip(const QString &toolTip)设置项的悬浮提示文本(鼠标悬停时显示)。
void setWhatsThis(const QString &whatsThis)设置项的“这是什么?”帮助文本(通过帮助按钮触发)。
QSize sizeHint() const返回项的推荐显示尺寸。
QString statusTip() const返回项的状态栏提示文本。
QString text() const返回项的显示文本。
int textAlignment() const返回项的文本对齐方式(以Qt::Alignment枚举值的整数形式表示)。
QString toolTip() const返回项的悬浮提示文本。
int type() const返回项的类型(用于自定义项类型的区分)。
QString whatsThis() const返回项的“这是什么?”帮助文本。
virtual void write(QDataStream &out) const将项的内容写入数据流out(用于序列化)。
virtual bool operator<(const QListWidgetItem &other) const定义项的小于比较规则(默认按文本排序,可重载实现自定义排序逻辑)。
QListWidgetItem &operator=(const QListWidgetItem &other)赋值运算符,将另一个项other的属性复制到当前项。

 实践

ui效果如下

有一个显示控件:qlistwidget,初始化的时候用他的additem函数添加三个项

ui->listWidget->addItem("c++");
ui->listWidget->addItem("java");
ui->listWidget->addItem("好好学习");

 在ui界面点击提交会把lineediter里面的文本添加为listwidget的项,注意,在ui里面添加的槽不需要用connect连接,已经连接过了,如果再用会连续触发两次。

void MainWindow::on_btnclicked_clicked()
{//获取lineediter里面的文本QString str=ui->lineEdit->text();//如果内容为空,不执行if(str.isEmpty()){return;}ui->listWidget->addItem(str);
}

删除按钮同理,用takeitem删除选中项

void MainWindow::on_btndel_clicked()
{int row =ui->listWidget->currentRow();if(row<0){qDebug()<<"没有选中任何项";return;}qDebug()<<"第"<<row<<"行已被删除";ui->listWidget->takeItem(row);
}

完整代码如下: 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QString>
#include<QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);ui->listWidget->addItem("c++");ui->listWidget->addItem("java");ui->listWidget->addItem("好好学习");//连接槽函数,这里连接槽函数是不对的,在ui界面点击转到槽是默认有链接的,用connect会重复出发信号导致出错//connect(ui->btnclicked,&QPushButton::clicked,this,&MainWindow::on_btnclicked_clicked);// connect(ui->btndel,&QPushButton::clicked,this,&MainWindow::on_btndel_clicked);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_btndel_clicked()
{int row =ui->listWidget->currentRow();if(row<0){qDebug()<<"没有选中任何项";return;}qDebug()<<"第"<<row<<"行已被删除";ui->listWidget->takeItem(row);
}//将plainedit里面的文本加进listwidget
void MainWindow::on_btnclicked_clicked()
{//获取lineediter里面的文本QString str=ui->lineEdit->text();//如果内容为空,不执行if(str.isEmpty()){return;}ui->listWidget->addItem(str);
}//当前项变化
void MainWindow::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{if(current!=nullptr){qDebug()<<"当前项为:"<<current->text();}if(previous!=nullptr){qDebug()<<"之前项为:"<<previous->text();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Seata源码—1.Seata分布式事务的模式简介

大纲 1.Seata分布式事务框架简介 2.Seata AT模式实现分布式事务的机制 3.Seata AT模式下的写隔离机制 4.Seata AT模式下的读隔离机制 5.官网示例说明Seata AT模式的工作机制 6.Seata TCC模式的介绍以及与AT模式区别 7.Seata Saga模式的介绍 8.单服务多个库的分布式事务…

【Qt】之音视频编程2:QtAV的使用篇

QtAV 基本播放控制功能实现&#xff08;C & QML&#xff09; QtAV 提供了完整的播放控制 API&#xff0c;支持 播放、暂停、停止、快进快退、截屏 等功能。以下是具体实现方法&#xff1a; 1. C 控制方式 基本播放控制 #include <QtAV> #include <QtAV/AVPlaye…

歌词滚动效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 设置标签页图标 --><link rel"shortcut icon&…

基于大模型的TIA诊疗全流程智能决策系统技术方案

目录 一、多模态数据融合与预处理系统1.1 数据接入模块1.2 数据预处理伪代码二、TIA智能预测模型系统2.1 模型训练流程2.2 混合模型架构伪代码三、术中智能监测系统3.1 实时监测流程3.2 实时预测伪代码四、智能诊疗决策系统4.1 手术方案推荐流程4.2 麻醉方案生成伪代码五、预后…

Java 日期解析与格式化:从标准格式到自然语言解析

使用 Java 搭配 Apache Commons Lang3 和 Natty 库&#xff0c;实现灵活高效的日期解析与格式化。 一、背景 将不同格式的日期统一成一个格式。日期格式可能有以下几种类型&#xff1a; 标准格式&#xff1a;2024-02-28、14/05/2022、2002年5月6日非英文月份缩写&#xff1a;…

Room持久化库:从零到一的全面解析与实战

简介 在Android开发中,Room作为官方推荐的数据库持久化库,提供了对SQLite的抽象层,使得数据库操作更加安全、高效且易于维护。 Room通过注解处理器和编译时验证,显著降低了数据库操作的复杂度,同时支持响应式编程模式,使开发者能够轻松实现数据变化的实时监听。对于企业…

MySQL(6)如何删除数据库和表?

在 MySQL 中删除数据库和表是常见的管理操作。下面将详细介绍如何使用 SQL 语句以及图形化工具来删除数据库和表。 步骤一&#xff1a;连接 MySQL 服务器 首先&#xff0c;连接到 MySQL 服务器&#xff0c;可以使用命令行工具 mysql 或图形化工具如 MySQL Workbench。 使用命…

携固态电池、新形态钢壳叠片电池等产品 豪鹏科技将亮相CIBF 2025

携固态电池、新形态钢壳叠片电池等产品 豪鹏科技将亮相CIBF 2025 来源&#xff1a; 电池百人会-电池网 豪鹏科技&#xff08;展位号:14W001&#xff09;将携固态电池、新形态钢壳叠片电池及高安全性钠离子电池等前沿技术产品亮相CIBF 2025&#xff0c;凭借多年的技术积累和产…

React学习———useEffect和useLayoutEffect

useEffect useEffect是React的一个Hook&#xff0c;用于在函数组件中处理副作用。副作用包括数据获取、订阅、手动DOM操作以及其他需要再渲染后执行的操作 基本用法 useEffect(() > {// 副作用逻辑return () > {// 可选的清理函数} }, [依赖数组])第一个参数&#xff…

“天神之眼”计算平台的算力设计(预计500-1000 TOPS)

关于比亚迪“天神之眼”计算平台的算力设计&#xff08;预计500-1000 TOPS&#xff09;&#xff0c;其技术路径和行业意义值得深入探讨。以下从实现方式、技术挑战和行业影响三个维度展开分析&#xff1a; 1. 多芯片互联的技术实现路径 &#xff08;1&#xff09;芯片选型方案…

FPGA: Xilinx Kintex 7实现PCIe接口

在Xilinx Kintex-7系列FPGA上实现PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;接口&#xff0c;通常使用Xilinx提供的7 Series Integrated Block for PCIe IP核&#xff0c;结合Vivado设计流程。以下是实现PCIe接口的详细步骤和关键点&#xff0c;适…

ArcGIS Desktop使用入门(二)常用工具条——图形

系列文章目录 ArcGIS Desktop使用入门&#xff08;一&#xff09;软件初认识 ArcGIS Desktop使用入门&#xff08;二&#xff09;常用工具条——标准工具 ArcGIS Desktop使用入门&#xff08;二&#xff09;常用工具条——编辑器 ArcGIS Desktop使用入门&#xff08;二&#x…

JT/T 808 通讯协议及数据格式解析

文章目录 一、引言二、协议数据帧结构三、消息头结构&#xff08;Message Header&#xff09;四、常用消息类型&#xff08;Message ID&#xff09;五、典型消息体结构解析六、数据转义规则七、校验码计算方法八、终端与平台通信流程示意&#xff08;简要&#xff09;九、平台接…

Rust 输出到命令行

Rust 输出到命令行 引言 Rust 是一门系统编程语言&#xff0c;以其高性能、内存安全、并发支持和零成本抽象等特性而闻名。在开发过程中&#xff0c;将 Rust 程序的输出传递到命令行是常见的需求。本文将详细介绍 Rust 输出到命令行的多种方法&#xff0c;帮助读者掌握这一技…

从字符串转换到矩阵快速幂:解决多次转换后的长度问题

引言 在编程竞赛和算法问题中&#xff0c;我们经常会遇到需要对字符串进行多次转换的问题。本文将介绍一个有趣的问题&#xff1a;给定一个字符串和转换规则&#xff0c;计算经过多次转换后字符串的长度。由于直接模拟会导致性能问题&#xff0c;我们将使用矩阵快速幂来高效解…

Vue2 elementUI 二次封装命令式表单弹框组件

需求&#xff1a;封装一个表单弹框组件&#xff0c;弹框和表单是两个组件&#xff0c;表单组件以插槽的形式动态传入弹框组件中。 外部组件使用的方式如下&#xff1a; 直接上代码&#xff1a; MyDialog.vue 弹框组件 <template><el-dialog:titletitle:visible.syn…

React Hooks:从“这什么鬼“到“真香“的奇幻之旅

写在前面:一个让React老手都拍案叫绝的魔法 “等等,函数组件怎么能有状态?!” —— 这是2018年我第一次听说React Hooks时的反应。当时我正在用class组件写一个复杂的表单,生命周期方法乱得像一碗意大利面。直到我看到了这段代码: function Counter() {const [count, s…

论文阅读笔记——双流网络

双流网络论文 视频相比图像包含更多信息&#xff1a;运动信息、时序信息、背景信息等等。 原先处理视频的方法&#xff1a; CNN LSTM&#xff1a;CNN 抽取关键特征&#xff0c;LSTM 做时序逻辑&#xff1b;抽取视频中关键 K 帧输入 CNN 得到图片特征&#xff0c;再输入 LSTM&…

SpringBoot Vue MySQL酒店民宿预订系统源码(支付宝沙箱支付)+代码讲解视频

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

右值引用的学习

传统的C语法中就有引用的语法&#xff0c;而C11中新增了的右值引用语法特性&#xff0c;所以从现在开始我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用&#xff0c;都是给对象取别名。 左值引用和右值引用 在讲之前&#xff0c;我们先来看一下什么是左值和右值…