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

qt QListWidgetItem详解

1、概述

QListWidgetItem 是 Qt 框架中的一个类,它用于在 QListWidget(一个基于项的列表视图)中表示单个项。QListWidgetItem 通常包含文本、图标或两者的组合,并且可以作为列表中的一行来显示。QListWidget 继承自 QAbstractItemView,并通过 QListWidgetItem 来管理列表中的每一项。QListWidgetItem 提供了设置和获取项内容的方法,以及处理用户交互(如点击)的信号。

2、重要方法

QListWidgetItem 提供了多种方法来管理和操作列表项,以下是一些重要的方法:

  • setText:设置项的文本内容。
  • text:获取项的文本内容。
  • setIcon:设置项的图标。
  • icon:获取项的图标。
  • setSizeHint:设置项的大小提示,这有助于 QListWidget 在布局时确定项的大小。
  • setData 和 data:为项设置和获取自定义数据(通常使用 Qt::UserRole 或更高的枚举值作为键)。
  • setCheckState:如果 QListWidget 设置为支持复选框,则此方法可以设置项的选中状态(Qt::Unchecked、Qt::PartiallyChecked、Qt::Checked)。
  • checkState:获取项的选中状态。
  • setBackgroundColor 和 backgroundColor(注意:这些方法在某些 Qt 版本中可能不是 QListWidgetItem 的直接成员,而是需要通过样式表或委托来设置):设置和获取项的背景颜色。
  • setForeground 和 foreground(同样,这些方法可能需要通过样式表或委托来设置):设置和获取项的前景色(文本颜色)。
3、重要信号

QListWidgetItem 本身不直接发射信号,因为信号通常由 QListWidget 发射来响应项的更改或用户交互。然而,QListWidget 发射的一些与 QListWidgetItem 相关的信号包括:

  • itemClicked:当用户点击列表中的某个项时发射。
  • itemDoubleClicked:当用户双击列表中的某个项时发射。
  • itemPressed:当用户按下鼠标按钮在列表中的某个项上时发射。
  • itemReleased:当用户释放鼠标按钮在列表中的某个项上时发射。
  • itemChanged:当列表中的某个项(例如,其文本或图标)发生变化时发射(注意:这通常要求项是可编辑的,且内容实际发生了改变,但 QListWidget 默认不支持直接编辑项,这可能需要自定义委托)。
  • itemEntered:当鼠标指针进入列表中的某个项的区域时发射(注意:这可能需要自定义样式或事件过滤器来实现)。
  • currentRowChanged:当当前选中的项(行)发生变化时发射。
  • currentItemChanged:当当前选中的项发生变化时发射(与 currentRowChanged 类似,但直接引用 QListWidgetItem)。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    setWindowTitle("QListWidgetItem Example");
    resize(400, 300);

    // 创建列表控件
    QListWidget *listWidget = new QListWidget(this);

    // 添加项目项
    QListWidgetItem *item1 = new QListWidgetItem("File1.txt");
    item1->setIcon(QIcon(QApplication::style()->standardIcon(QStyle::SP_FileIcon)));
    listWidget->addItem(item1);

    QListWidgetItem *item2 = new QListWidgetItem("File2.txt");
    item2->setIcon(QIcon(QApplication::style()->standardIcon(QStyle::SP_FileIcon)));
    listWidget->addItem(item2);

    QListWidgetItem *item3 = new QListWidgetItem("File3.txt");
    item3->setIcon(QIcon(QApplication::style()->standardIcon(QStyle::SP_FileIcon)));
    listWidget->addItem(item3);

    // 创建按钮
    QPushButton *addButton = new QPushButton("Add File");

    // 添加新项目项
    connect(addButton, &QPushButton::clicked, this, [listWidget]() {
        static int fileCount = 4;
        QListWidgetItem *newItem = new QListWidgetItem("File" + QString::number(fileCount++) + ".txt");
        newItem->setIcon(QIcon(QApplication::style()->standardIcon(QStyle::SP_FileIcon)));
        listWidget->addItem(newItem);
    });

    // 布局管理
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(listWidget);
    layout->addWidget(addButton);
    QWidget *centralWidget = new QWidget;
    centralWidget->setLayout(layout);

    setCentralWidget(centralWidget);
}

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

           


http://www.kler.cn/a/384845.html

相关文章:

  • 使用 Python 调用云 API 实现批量共享自定义镜像
  • 3200. 三角形的最大高度
  • 不愧是阿里巴巴最新开源的Java面试笔记,30万字精华总结 + 面试1300问附答案整理
  • 二次封装 el-pagination 组件存在的问题
  • 「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目
  • “高效开发之路:用Spring MVC构建健壮的企业级应用”
  • 计算机网络:网络层 —— 软件定义网络 SDN
  • HarmonyOS Next(鸿蒙星河版)侧载应用
  • VB中如何处理性能优化问题,如减少内存泄漏、提高执行效率等
  • 【Python】图片处理
  • 一招解决Mac没有剪切板历史记录的问题
  • Go八股(Ⅳ)***slice,string,defer***
  • scala Map训练
  • MongoDB面试专题33道解析
  • fastadmin后台列表根据所选中的行统计指定字段|fastadmin点击checkbox或反选统计某个字段的值
  • 关于git命令
  • 潮玩宇宙方块兽系统开发:可定制UI与多种游戏内嵌助力个性化体验
  • 【JAVA毕业设计】基于Vue和SpringBoot的图书馆管理系统
  • GS-SLAM论文阅读--High-Fidelity SLAM Using Gaussian Splatting
  • 设计模式之——观察者模式
  • Vue3+element-plus摘要
  • 从零学习大模型(十四)-----量化(一)
  • Autosar 存储闲聊:使用EEP配Flash存储方案的可靠性和耐久性
  • 文件系统和日志管理
  • 基于java+SpringBoot+Vue的协力服装厂服装生产管理系统设计与实现
  • 数据分析的力量如何驱动商业决策和创新发展