0、说明

QListWidget指明一个基于Item的List Widget。

构造

QListWidget与QListView类似,都可以显示一列Item,区别在于前者可以往其中增删Item。

QListWidget的构造方法和其他Widgets的构造方法类似:

QListWidget *listWidget = new QListWidget(this);

选中

调用selectionMode()可以知道该ListWidget一次可以选中多少个Item,是否可以构造复杂的选项。调用setSelectionMode()可以设置该变量。

添加与移除

有两种方法可以往List中增加Items:

添加单个Item

①构造Item时,指明所在ListWidget,就可以在创建完成后自动加进去;

    new QListWidgetItem(tr("Oak"), listWidget);
new QListWidgetItem(tr("Fir"), listWidget);
new QListWidgetItem(tr("Pine"), listWidget);

②构造Item,不指定所在ListWidget;等待ListWidget调用insertItem()添加。

    QListWidgetItem *newItem = new QListWidgetItem;
newItem->setText(itemText);
listWidget->insertItem(row, newItem);

添加多个Items

如果有多个Items,可以用insertItems()。

移除:takeItem()

统计:count()

当前Item

通过currentItem()得到当前Item,通过setCurrentItem()改变当前Item。当然我们也能通过鼠标或键盘直接选中不同的Item。

每当当前Item改变时,发送currentItemChanged()信号,信号中保存有修改前后的两个Item。

1、模块和加载项

Header: #include <QListWidget>
qmake: QT += widgets
Inherits: QListView

2、构造

QListWidget(QWidget *parent = nullptr)  

3、实例字段

 

字段

说明

getter、setter

信号

int count 一共多少Item count()  
int currentRow 当前行

currentRow()

setCurrentRow(int row)

currentRowChanged(int currentRow)
bool sortingEnabled 可否排序

isSortingEnabled()

setSortingEnabled(bool enable)

 

6、实例方法

返回值类型

方法

说明

void

addItem(const QString &label)

addItem(QListWidgetItem *item)

在List末尾加入一个Item(多次加入同一个Item会导致不可预知的错误)
void addItems(const QStringList &labels) 在List末尾插入若干text为labels中的Label的Item
void closePersistentEditor(QListWidgetItem *item) 关闭给定Item上的编辑器
int count() 一共多少个Item
QListWidgetItem * currentItem() 当前Item
int currentRow() 当前Item所在行
void editItem(QListWidgetItem *item) 如果item可编辑,就开始编辑
QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) 查找Text符合给定的text的Items
void

insertItem(int row, QListWidgetItem *item)

insertItem(int row, const QString &label)

在指定行插入Item
void insertItems(int row, const QStringList &labels) 在指定行插入多个Items
bool isPersistentEditorOpen(QListWidgetItem *item) item上的编辑器是否开启
bool isSortingEnabled() 是否允许排序
QListWidgetItem * item(int row) 指定行上的Item
QListWidgetItem *

itemAt(const QPoint &p)

itemAt(int x, int y)

指定位置处的Item

该位置依赖于Widget的viewport()说明的坐标系

QWidget * itemWidget(QListWidgetItem *item) 返回一个Widget用于展示给定Item
void openPersistentEditor(QListWidgetItem *item) 在指定Item上打开编辑器
void removeItemWidget(QListWidgetItem *item) 移除用于展示给定Item而设置的Widget
int row(const QListWidgetItem *item) Item所在行
void selectedItems() 当前选中的Item
setCurrentItem(QListWidgetItem *item) 设置当前Item
setCurrentRow(int row) 设置当前行
setItemWidget(QListWidgetItem *item, QWidget *widget) 设置Widget用于展示给定Item
setSortingEnabled(bool enable)  
void sortItems(Qt::SortOrder order = Qt::AscendingOrder) 按照order指定的规则进行排序
QListWidgetItem * takeItem(int row) 提取并移除指定行的Item
QRect visualItemRect(const QListWidgetItem *item) 返回一个只包含给定Item的矩形框QRect

7、信号

信号

说明

currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) 每当List中的当前的Item改变时,参数分别标明改变前后的Item
currentRowChanged(int currentRow)

当前Item修改时发送该信号。currnetRow指明该Item所在行。

currentTextChanged(const QString &currentText) 当前Item修改时发送该信号。currnetText指明该Item的文本。
itemActivated(QListWidgetItem *item) 每当List中参数指明的Item激活(选中)时,发送该信号
itemChanged(QListWidgetItem *item) 每当List中参数指明的Item改变时,发送该信号
itemClicked(QListWidgetItem *item) 每当List中参数指明的Item被单击时,发送该信号
itemDoubleClicked(QListWidgetItem *item) 每当List中参数指明的Item被双击时,发送该信号
itemEntered(QListWidgetItem *item) 每当鼠标焦点进入List中的某个Item时,发送该信号,参数指明这个Item
itemPressed(QListWidgetItem *item) 每当List中的某个Item被按时,发送该信号,参数指明这个Item
itemSelectionChanged() 每当选中的Item改变时发送该信号

8、槽

说明

clear() 清空List
scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible) 上下滚动视图,以保证item始终可见

Qt:QListWidget的更多相关文章

  1. Qt 学习之路 2(42):QListWidget、QTreeWidget 和 QTableWidget

    Qt 学习之路 2(42):QListWidget.QTreeWidget 和 QTableWidget 豆子 2013年2月5日 Qt 学习之路 2 38条评论 上一章我们了解了 model/vie ...

  2. Qt学习——QListWidget控件的使用

    转载:GDUTLYP Qt提供QListWidget类列表框控件用来加载并显示多个列表项.QListWidgetItem类就是列表项类. 一般列表框控件中的列表项有两种加载方式: 一种是由用户手动添加 ...

  3. Qt:禁止qDebug的输出

    Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT

  4. Qt:使用自定义的字体

    Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体   QFontDatabase::addApplicationFont("XENOTRON.TTF" ...

  5. Qt:QJsonObject

    0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...

  6. Qt:QJsonValue

    0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...

  7. Qt:QJsonArray

    0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...

  8. Qt:QUrl构造时的qrc前缀

    参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...

  9. PyQt(Python+Qt)学习随笔:QListWidget对项进行排序的sortItems方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListWidget的sortItems方法用于对列表部件中所有项按参数进行排序,相关调用语法如下 ...

随机推荐

  1. 字的研究(3)fontTools-TrueType轮廓坐标的获取以及基于TrueType的Glyph实例的构建

    前言 本文主要介绍如果使用Python第三方库fontTools提取OpenType字体文件中的TrueType轮廓坐标以及如何构建基于TrueType的Glyph实例 TrueType轮廓坐标的获取 ...

  2. python15day

    昨日回顾 装饰器:完美的呈现了开放封闭原则.本质:闭包. def wrapper(f): def inner(*args,**kwargs): '''在执行被装饰函数之前,想写什么代码写什么代码''' ...

  3. 2.flink

    Flink 运行时的组件 作业管理器(JobManager) •控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager 所控制执行. •JobManager 会先接收 ...

  4. 常见线程池之 newCacheThreadPool 缓存线程池 简单使用

    package com.aaa.threaddemo; import java.util.concurrent.BlockingQueue; import java.util.concurrent.E ...

  5. markdown介绍和使用(超全建议收藏)

    Markdown介绍 Markdown 其实在 2004 年就有了,不过之前一直很小众,这几年随着相关应用平台的发展,Markdown以其独到的优势迅速火起来了.Markdown编辑器使用一套格式标记 ...

  6. 社交网络分析的 R 基础:(二)变量与字符串

    本章会从 R 语言中最基本的数据类型开始介绍,在此之后就可以开始 R 语言实践了.对社交网络分析而言,我们在处理字符串上所花费的时间要远远大于处理数字的时间,因此本章还会介绍常用的字符串处理操作. 变 ...

  7. Luogu_P2048

    超级钢琴 有 \(n\) 个音符,编号从 \(1\) 到 \(n\) .第 \(i\) 个音符的美妙度为 \(A_i\) . 我们要找到 \(k\) 段不同超级和弦组成的乐曲,每段乐曲的连续音符个数 ...

  8. WebSocket协议详解及应用

    WebSocket协议详解及应用(七)-WebSocket协议关闭帧 本篇介绍WebSocket协议的关闭帧,包括客户端及服务器如何发送并处理关闭帧.关闭帧错误码及错误处理方法.本篇内容主要翻译自RF ...

  9. Eclipse导入项目java文件中文乱码

    感谢大佬:https://blog.csdn.net/ordinaryprogrammerc/article/details/83013710 本文链接:https://blog.csdn.net/o ...

  10. C++学习笔记_complex类的实现

    头文件中的防卫式声明 点击查看代码 #ifndef __COMPLEX__ #define __COMPLEX__ class complex { } #endif 类的定义 点击查看代码 class ...