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();
}
觉得有帮助的话,打赏一下呗。。