当前位置: 首页 > news >正文

qt QListWidget详解

1、概述

QListWidget 是 Qt 框架中的一个类,它提供了一个基于模型的视图,用于显示项目的列表。QListWidget 继承自 QAbstractItemView 并为项目列表提供了一个直观的接口。与 QTreeView 和 QTableView 不同,QListWidget 是专门为单行或多行项目列表设计的,这使得它非常适合于展示如文件列表、消息列表等场景。QListWidget 提供了对项目的插入、删除、排序和选择等操作的支持,同时支持拖放功能。

2、重要方法

QListWidget 提供了一系列方法来管理和操作列表中的项目,以下是一些重要的方法:

  • addItem:向列表中添加一个新项目。
  • addItems:向列表中添加多个项目。
  • insertItem:在指定位置插入一个新项目。
  • takeItem:移除并返回指定位置的项目。
  • removeItemWidget:从列表中移除与给定小部件关联的项目,但不删除小部件。
  • clear:清除列表中的所有项目。
  • sortItems:对列表中的项目进行排序。
  • setItemWidget:为指定项目设置一个小部件。
  • item:返回指定位置的项目。
  • rowCount:返回列表中的项目数。
  • setCurrentItem:设置当前选定的项目。
  • currentItem:返回当前选定的项目。
  • setSelectionMode:设置选择模式(如单选、多选等)。
3、重要信号

QListWidget 发射多种信号来响应用户的操作和数据的变更,以下是一些重要的信号:

  • itemClicked:当用户单击某个项目时发射此信号。
  • itemDoubleClicked:当用户双击某个项目时发射此信号。
  • itemPressed:当用户按下鼠标按钮在某个项目上时发射此信号。
  • itemReleased:当用户释放鼠标按钮在某个项目上时发射此信号。
  • itemChanged:当项目的某些属性(如文本或图标)发生变化时发射此信号(注意:QListWidget 本身不直接支持项目属性的更改,但如果你使用了自定义小部件,你可能需要手动发射此信号或类似的信号)。
  • currentRowChanged:当当前选定的项目发生变化时发射此信号。
  • currentTextChanged:当当前选定项目的文本发生变化时发射此信号(注意:这通常不是 QListWidget 的标准行为,你可能需要自定义逻辑来发射此信号)。
  • itemEntered:当鼠标指针进入某个项目的区域时发射此信号(注意:这可能需要自定义样式或事件过滤器来实现)。
#include <QApplication>  
#include <QListWidget>  
#include <QListWidgetItem>  
#include <QDebug>  int main(int argc, char *argv[]) {  QApplication app(argc, argv);  // 创建一个 QListWidget 实例  QListWidget listWidget;  // 添加项目  QListWidgetItem *item1 = new QListWidgetItem("Item 1");  QListWidgetItem *item2 = new QListWidgetItem("Item 2");  QListWidgetItem *item3 = new QListWidgetItem("Item 3");  listWidget.addItem(item1);  listWidget.addItem(item2);  listWidget.addItem(item3);  // 连接 itemClicked 信号到槽函数  QObject::connect(&listWidget, &QListWidget::itemClicked, [&](QListWidgetItem *item) {  qDebug() << "Clicked item:" << item->text();  });  // 显示 QListWidget  listWidget.show();  return app.exec();  
}

觉得有帮助的话,打赏一下呗。。

           

http://www.lryc.cn/news/478439.html

相关文章:

  • java ssm 校园快递物流平台 校园快递管理系统 物流管理 源码 jsp
  • 西安电子科技大学考研网报审核通过了,然后呢?
  • pandas习题 051:将字符串数据读取到 DataFrame
  • 改进探路者算法复现
  • PostgreSQL 学习笔记:PostgreSQL 主从复制
  • 【系统架构设计师(第2版)】十一、未来信息综合技术
  • Pytorch学习--神经网络--优化器
  • w~自动驾驶合集11
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:解锁大数据分析的速度密码(上)(1/30)
  • GESP4级考试语法知识(算法概论(三))
  • x-cmd pkg | gum - 轻松构建美观实用的终端界面,解锁命令行新玩法
  • WMS系统打通仓储全链条数据势在必行,该如何做呢
  • 基于Python的校园爱心帮扶管理系统
  • 如何基于pdf2image实现pdf批量转换为图片
  • Tomcat(1) 什么是Tomcat?
  • 商务礼仪与职场沟通
  • C语言必做30道练习题
  • Linux信号_信号的产生
  • 数据库基础(7) . DML-基本操作
  • windows运行ffmpeg的脚本报错:av_ts2str、av_ts2timestr、av_err2str => E0029 C4576
  • [mysql]mysql的DML数据操作语言增删改,以及新特性计算列,阿里巴巴开发手册mysql相关
  • Github 2024-11-07 Go开源项目日报 Top10
  • 【黑盒测试】等价类划分法及实例
  • LeetCode17. 电话号码的字母组合(2024秋季每日一题 59)
  • SQLite数据库是什么?DB Browser for SQLite是什么?
  • 核心概念解析Caffeine 缓存模型与策略
  • ubuntu 22.04 防火墙
  • 【数据结构-合法括号字符串】力扣678. 有效的括号字符串
  • ThreadX在STM32上的移植:F1,F4通用启动文件tx_initialize_low_level.s
  • 【算法】递归+深搜:814.二叉树剪枝