【Qt快速入门(七)】- QListWidget列表框的使用

发布于:2024-06-21 ⋅ 阅读:(25) ⋅ 点赞:(0)

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