目录
- Qt快速入门(七)- QListWidget列表框的使用
- QListWidget列表框的使用
- QListWidget的基本用法
- 项管理
- 1. 插入和删除项
- 2. 查找和排序项
- 信号与槽
- 1. 处理项选择事件
- 2. 处理项双击事件
- 样式设置
- 1. 设置项的字体和颜色
- 2. 设置项的背景颜色
- 3. 自定义项样式
- 扩展功能
- 1. 多选
- 2. 拖放
- 3. 排序
- 总结
Qt快速入门(七)- QListWidget列表框的使用
QListWidget列表框的使用
QListWidget是Qt框架中的一个用于显示和管理列表项的控件。它提供了方便的接口来添加、删除和操作列表中的项,并且支持多选、拖放、排序等高级功能。本文将详细介绍QListWidget的使用,包括其基本用法、项管理、信号与槽、样式设置、扩展功能以及在Qt Designer中的使用。
QListWidget的基本用法
创建和添加项
QListWidget可以通过代码动态创建和添加项。以下是一个简单的示例,展示如何创建QListWidget并向其中添加项:
#include <QApplication>
#include <QListWidget>
#include <QVBoxLayout>
#include <QWidget>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;QVBoxLayout layout(&window);QListWidget listWidget;listWidget.addItem("Item 1");listWidget.addItem("Item 2");listWidget.addItem("Item 3");layout.addWidget(&listWidget);window.show();return app.exec();
}
在这个示例中,我们创建了一个QListWidget实例,并使用addItem方法向其中添加了三项。
通过QStringList添加多个项
除了逐个添加项,QListWidget还支持通过QStringList一次性添加多个项:
#include <QApplication>
#include <QListWidget>
#include <QVBoxLayout>
#include <QWidget>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;QVBoxLayout layout(&window);QListWidget listWidget;QStringList items = {"Item A", "Item B", "Item C"};listWidget.addItems(items);layout.addWidget(&listWidget);window.show();return app.exec();
}
在这个示例中,我们使用addItems方法向QListWidget中添加了一个字符串列表。
项管理
QListWidget提供了多种方法来管理列表项,包括插入、删除、查找和排序项。
1. 插入和删除项
可以使用insertItem方法在指定位置插入项,使用takeItem和removeItemWidget方法删除项。
#include <QApplication>
#include <QListWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;QVBoxLayout layout(&window);QListWidget listWidget;listWidget.addItem("Item 1");listWidget.addItem("Item 2");listWidget.addItem("Item 3");QPushButton insertButton("Insert Item at Position 1");QPushButton deleteButton("Delete Selected Item");layout.addWidget(&listWidget);layout.addWidget(&insertButton);layout.addWidget(&deleteButton);QObject::connect(&insertButton, &QPushButton::clicked, [&listWidget]() {listWidget.insertItem(1, "Inserted Item");});QObject::connect(&deleteButton, &QPushButton::clicked, [&listWidget]() {del