Windows图形界面(GUI)-QT-C/C++ - Qt List Widget详解与应用

  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

QListWidget概述

使用场景

常见样式

QListWidget属性设置

显示方式 (Display)

交互行为 (Interaction)

高级功能 (Advanced)

QListWidget常见操作

内容处理

增加项目

删除项目

修改项目

查找项目

信号交互

项目选择变化

项目双击

项目右键点击


QListWidget概述

QListWidget 是一个基于 QListView 的高级控件,它内置了一个标准的模(QListWidgetItem),适合快速实现列表功能。

QListView 相比,QListWidget 更加简单易用,但在灵活性和复杂数据操作上稍显不足。

使用场景

  • 简单的文本或图标列表显示。
  • 快速开发无需复杂模型的数据列表。
  • 不需要与其他视图共享数据模型的场景。

常见样式

  1. 仅文本项目:显示简单的文本列表项。
  2. 图标和文本项目:显示带有图标的文本列表项。
  3. 自定义项目:通过 QListWidgetItem 或自定义控件实现更加复杂和个性化的列表项。

QListWidget属性设置

显示方式 (Display)

  • viewMode:设置显示模式。

    • QListView::ListMode:项目以列表形式显示(垂直排列)。
    • QListView::IconMode:项目以图标形式显示(水平排列)。
  • gridSize:设置项目布局的网格大小(适用于 IconMode)。

  • iconSize:设置项目图标的大小。

  • wordWrap:设置文本是否自动换行。

交互行为 (Interaction)

  • dragEnabled:启用拖动功能。

  • dragDropMode:设置拖放模式:

    • QAbstractItemView::NoDragDrop:禁用拖放。
    • QAbstractItemView::DragOnly:仅支持拖动。
    • QAbstractItemView::DropOnly:仅支持放置。
    • QAbstractItemView::DragDrop:支持拖动和放置。
  • defaultDropAction:设置默认拖放操作(如复制、移动等)。

  • editTriggers:设置编辑触发器(如双击、选择变化等)。

  • selectionMode:设置选择模式(单选、多选等)。

  • selectionBehavior:设置选择行为(选择项目、行或列)。

高级功能 (Advanced)

  • layoutMode:设置布局模式(SinglePass 或 Batched)。
  • flow:设置项目布局方向(从左到右或从上到下)。
  • resizeMode:设置调整模式(固定大小或自动调整)。
  • spacing:设置项目之间的间距。
  • uniformItemSizes:是否统一项目大小。
  • alternatingRowColors:是否启用交替行颜色。

QListWidget常见操作

内容处理

增加项目
void MainWindow::on_pushButton_addItem_clicked()  
{  QListWidgetItem* item = new QListWidgetItem();  item->setText(QString().asprintf("Item %d", ui->listWidget->count()));  item->setIcon(QIcon(":/icons/icon.png"));  ui->listWidget->addItem(item);  
}
删除项目
void MainWindow::on_pushButton_removeItem_clicked()  
{  QListWidgetItem* item = ui->listWidget->currentItem();  delete ui->listWidget->takeItem(ui->listWidget->row(item));  
}
修改项目
void MainWindow::on_pushButton_modifyItem_clicked()  
{  QListWidgetItem* item = ui->listWidget->currentItem();  if (item) {  item->setText("Modified Item");  }  
}
查找项目
void MainWindow::on_pushButton_findItem_clicked()  
{  QList<QListWidgetItem *> items = ui->listWidget->findItems("Search Text", Qt::MatchContains);  for (QListWidgetItem* item : items) {  item->setBackground(Qt::yellow);  // 高亮显示找到的项目  }  
}

信号交互

项目选择变化
connect(ui->listWidget, &QListWidget::itemSelectionChanged, this, [this]() {  QListWidgetItem* item = ui->listWidget->currentItem();  if (item) {  qDebug() << "Selected item ->" << item->text();  }  
});
项目双击
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, [](QListWidgetItem *item) {  qDebug() << "Item double clicked ->" << item->text();  
});
项目右键点击
    ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);connect(ui->listWidget, &QListWidget::customContextMenuRequested, this, [this](const QPoint &pos) {QListWidgetItem* item = ui->listWidget->itemAt(pos);if (item) {QMenu contextMenu(this);QAction* editAction = contextMenu.addAction("Edit");QAction* deleteAction = contextMenu.addAction("Delete");QAction* selectedAction = contextMenu.exec(ui->listWidget->mapToGlobal(pos));if (selectedAction == editAction) {item->setText("Edited via Context Menu");} else if (selectedAction == deleteAction) {delete ui->listWidget->takeItem(ui->listWidget->row(item));}}});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文了解如何使用 DBeaver 管理 DolphinDB

在日常的数据开发、分析和数据库运维中&#xff0c;一款优秀的 IDE 能够极大地提升工作效率。DBEaver 是一款由 Java 编写的一站式跨平台连接器&#xff0c;其社区版本已能支持连接近百种数据库&#xff0c;受到广大开发者的喜爱。近期。DolphinDB 与 DBeaver 团队共同努力&…

CSRF攻击XSS攻击

概述 ​在 HTML 中&#xff0c;<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax 都可以指向一个资源地址&#xff0c;而所谓的跨域请求就是指&#xff1a;当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指…

【机器学习实战入门】使用 Pandas 和 OpenCV 进行颜色检测

Python 颜色检测项目 今天的项目将非常有趣和令人兴奋。我们将与颜色打交道&#xff0c;并在项目过程中学习许多概念。颜色检测对于识别物体来说是必要的&#xff0c;它也被用作各种图像编辑和绘图应用的工具。 什么是颜色检测&#xff1f; 颜色检测是检测任何颜色名称的过程…

vue2 web 多标签输入框 elinput是否当前焦点

又来分享一点点工作积累及解决方案 产品中需要用户输入一些文字后按下回车键生成标签来显示在页面上&#xff0c;经过尝试与改造完成如下&#xff1a; <template><div class"tags-view" click"beginInput"><el-tag :key"index" …

SSE 实践:用 Vue 和 Spring Boot 实现实时数据传输

前言 大家好&#xff0c;我是雪荷。最近我在灵犀 BI 项目中引入了 SSE 技术&#xff0c;以保证图表的实时渲染&#xff0c;当图表渲染完毕服务端推送消息至浏览器端触发重新渲染。 什么是 SSE&#xff1f; SSE 全称为 Server-Send Events 意思是服务端推送事件。 SSE 相比于 …

记录一次 centos 启动失败

文章目录 现场1分析1现场2分析2搜索实际解决过程 现场1 一次断电,导致 之前能正常启动的centos 7.7 起不来了有部分log , 关键信息如下 [1.332724] XFS(sda3): Internal error xfs ... at line xxx of fs/xfs/xfs_trans.c [1.332724] XFS(sda3): Corruption of in-memory data…

【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)

&#xff1a; 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,青少年编程领域.https://blog.csdn.net/2401_82648291?spm1010.2135.3001.5343 在本篇文章中&#xff0c;博主将带大家去学习所谓的…

【k8s面试题2025】3、练气中期

体内灵气的量和纯度在逐渐增加。 文章目录 在 Kubernetes 中自定义 Service端口报错常用控制器Kubernetes 中拉伸收缩副本失效设置节点容忍异常时间Deployment 控制器的升级和回滚日志收集资源监控监控 Docker将 Master 节点设置为可调度 在 Kubernetes 中自定义 Service端口报…

Ubuntu20.04取消root账号自动登录的方法,触觉智能RK3568开发板演示

Ubuntu20.04默认情况下为root账号自动登录&#xff0c;本文介绍如何取消root账号自动登录&#xff0c;改为通过输入账号密码登录&#xff0c;使用触觉智能EVB3568鸿蒙开发板演示&#xff0c;搭载瑞芯微RK3568&#xff0c;四核A55处理器&#xff0c;主频2.0Ghz&#xff0c;1T算力…

LeetCode | 解锁数组与字符串的秘密:经典题型详解与高效解法

1.理论 1. 1.核心概念 1.1.1.数组(Array) 定义&#xff1a;存储相同数据类型的元素的线性集合。 特点&#xff1a;支持随机访问&#xff08;通过索引&#xff09;;元素存储在连续内存中&#xff0c;支持高效的读写操作。 时间复杂度&#xff1a;访问&#xff1a;O(1);插入…

怎么修复损坏的U盘?而且不用格式化的方式!

当你插入U盘时&#xff0c;若电脑弹出“需要格式化才能使用”提示&#xff0c;且无法打开或读取其中的数据&#xff0c;说明U盘极有可能已经损坏。除此之外&#xff0c;若电脑在连接U盘后显示以下信息&#xff0c;也可能意味着U盘出现问题&#xff0c;需要修复损坏的U盘&#x…

数据结构漫游记:动态实现栈(stack)

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…

w163美食推荐商城

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

计算机网络 (47)应用进程跨越网络的通信

前言 计算机网络应用进程跨越网络的通信是一个复杂而关键的过程&#xff0c;它涉及多个层面和组件的协同工作。 一、通信概述 计算机网络中的通信&#xff0c;本质上是不同主机中的应用进程之间的数据交换。为了实现这种通信&#xff0c;需要借助网络协议栈中的各层协议&#x…

【Linux】Mysql部署步骤

一、JDK安装配置 在home目录下执行命令&#xff1a;mkdir Jdk 1.将JDK 上传至该文件夹&#xff0c;有些终端工具可以直接上传文件&#xff0c;比如&#xff1a;MobaXterm 可以看到安装包已经上传上来了 2.直接安装 命令&#xff1a;rpm -ivh jdk-8u311-linux-x64.rpm 3.安装成…

归子莫的科技周刊#2:白天搬砖,夜里读诗

归子莫的科技周刊#2&#xff1a;白天搬砖&#xff0c;夜里读诗 本周刊开源&#xff0c;欢迎投稿。 刊期&#xff1a;2025.1.5 - 2025.1.11。原文地址。 封面图 下班在深圳看到的夕阳&#xff0c;能遇到是一种偶然的机会&#xff0c;能拍下更是一种幸运。 白天搬砖&#xff0c;…

你需要什么样的资源隔离?丨TiDB 资源隔离最佳实践

导读 资源隔离是数据库性能优化的重要环节&#xff0c; TiDB 在当前版本已经实现了从数据级隔离到流控隔离的全面升级 &#xff0c;无论是多系统共享集群、复杂负载隔离&#xff0c;还是小型系统整合和 SQL 精细化控制&#xff0c;TiDB 都提供了灵活且高效的解决方案。 本文以…

w162体育馆管理系统

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

cursor重构谷粒商城02——30分钟构建图书管理系统【cursor使用教程番外篇】

前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速进阶到中高阶程序员。 本项目将基于谷粒商城…

浅谈云计算14 | 云存储技术

云存储技术 一、云计算网络存储技术基础1.1 网络存储的基本概念1.2云存储系统结构模型1.1.1 存储层1.1.2 基础管理层1.1.3 应用接口层1.1.4 访问层 1.2 网络存储技术分类 二、云计算网络存储技术特点2.1 超大规模与高可扩展性2.1.1 存储规模优势2.1.2 动态扩展机制 2.2 高可用性…