qt中实现QListWidget列表

使用最基本的QListWidgetItem来创建列表项,

具体使用下面setText、setIcon、addItem这三个方法

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"enum CustomRoles {IdRole = Qt::UserRole,      // 存储IDPhoneRole,                  // 等价于Qt::UserRole+1,存储电话EmailRole                   // 等价于Qt::UserRole+2,存储邮箱
};MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);for (int i=0;i<15;i++){QListWidgetItem* item=new QListWidgetItem;QIcon b(":/xu/hai/picc/1.jpg");item->setText("dddd");item->setIcon(b);//若所有Item都要存储一个叫“PhoneRole”字段用于保存电话,一个叫 “EmailRole”字段用于保存邮箱;//不同类型的附加数据需要用不同角色区分item->setData(PhoneRole,i);item->setData(EmailRole,QString("address :%1").arg(i));ui->listWidget->addItem(item);}connect(ui->listWidget, &QListWidget::itemClicked, this, &MainWindow::onListWidgetItemClicked);ui->listWidget->setStyleSheet("QListWidget::item { height: 100px; }");}void MainWindow::onListWidgetItemClicked(QListWidgetItem *item){// 1. 获取item的文本(setText设置的内容)QString itemText = item->text();qDebug() << "item文本:" << itemText; // 输出:"dddd"// 2. 获取自定义数据(setData设置的内容)qDebug() <<item->data(PhoneRole).toString() << item->data(EmailRole).toString();
}
MainWindow::~MainWindow()
{delete ui;
}


自定义个一个widget,然后绑定到qListWidgetItem上


formitem.cpp

#include "formitem.h"
#include "ui_formitem.h"
#include <QListWidget>
#include <QListWidgetItem>
#include "formitem.h"
#include <QDebug>
#include <QString>FormItem::FormItem(QWidget *parent) :QWidget(parent),ui(new Ui::FormItem)
{ui->setupUi(this);connect(ui->pushButton,&QPushButton::clicked,[=](){qDebug()<<"FormItem neibu  :"<<"";emit deleteInvok();});
}FormItem::~FormItem()
{delete ui;
}void FormItem::rec(globalVar* itemData){ui->label->setText(itemData->name);ui->label_2->setText(QString::number(itemData->age));ui->label_3->setText(QString::number(itemData->phone));
}

globalvar.h

#ifndef GLOBALVAR_H
#define GLOBALVAR_H#include <QObject>class globalVar : public QObject
{Q_OBJECT
public:explicit globalVar(QObject *parent = nullptr,QString namee="",int agee=0,int phonee=0);QString name;int age;int phone;
};#endif // GLOBALVAR_H

globalvar.cpp

#include "globalvar.h"globalVar::globalVar(QObject *parent,QString namee,int agee,int phonee) : QObject(parent)
{name=namee;age=agee;phone=phonee;
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "formitem.h"enum CustomRoles {IdRole = Qt::UserRole,      // 存储IDPhoneRole,                  // 等价于Qt::UserRole+1,存储电话EmailRole                   // 等价于Qt::UserRole+2,存储邮箱
};MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);globalVar* var01=new globalVar(this,"xuhaitao",42,135);listt.append(var01);globalVar* var02=new globalVar(this,"xuhaibing",30,136);listt.append(var02);ui->listWidget->setStyleSheet("QListWidget::item {width:500px; height: 80px; }");for(int i=0;i<listt.size();i++){QListWidgetItem* item=new QListWidgetItem;FormItem * fitem=new FormItem(ui->listWidget);connect(fitem,&FormItem::deleteInvok,[=](){// 先获取item的索引int row = ui->listWidget->row(item);// 移除并删除item//删除 item时 会自动删除它所关联的自定义 widget,不需要你额外手动删除 widgedelete ui->listWidget->takeItem(row);});fitem->rec(listt[i]);ui->listWidget->addItem(item);ui->listWidget->setItemWidget(item,fitem);}
}MainWindow::~MainWindow()
{delete ui;
}

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

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

相关文章

nginx-主配置文件

nginx-主配置文件一、主配置文件nginx.conf内容二、修改配置的文件后的操作三、配置虚拟主机的域名1. 修改nignx.conf配置文件2. 新建域名对应的网页根目录3. 重载nginx配置4. 验证一、主配置文件nginx.conf内容 [rootweb1 conf]# cat nginx.conf#user nobody; # nginx woke…

DBSACN算法的一些应用

以下是 DBSCAN 算法在 Python 中的几个典型应用示例&#xff0c;涵盖了基础使用、参数调优和可视化等方面&#xff1a;import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import DBSCAN from sklearn.datasets import make_moons, make_blobs from skl…

java9学习笔记-part1

G1 成为默认垃圾回收器在 Java 8 的时候&#xff0c;默认垃圾回收器是 Parallel Scavenge&#xff08;新生代&#xff09;Parallel Old&#xff08;老年代&#xff09;。到了 Java 9, CMS 垃圾回收器被废弃了&#xff0c;G1&#xff08;Garbage-First Garbage Collector&#x…

【github.io静态网页 怎么使用 github.io 搭建一个简单的网页?】

这里是一张展示 GitHub Pages 静态网站架构与部署流程的示意图&#xff0c;可以帮助你更直观理解整个流程。 要使用 github.io&#xff08;GitHub Pages&#xff09;搭建一个简单的网页&#xff0c;你可以按照以下步骤操作&#xff1a; 快速入门&#xff1a;个人网站&#xff…

记录一次ubuntu20.04 解决gmock not found问题的过程

在电脑上源码编译moveit&#xff0c;系统是ubuntu20.04&#xff0c;有三个电脑&#xff0c;分别叫做A,B,C好了&#xff0c;A和C都可以很顺畅地走流程编译通过&#xff0c;但是B遇到了gmock not found的问题&#xff0c;一开始没当回事&#xff0c;感觉重装下库&#xff0c;或者…

Java基础编程核心案例:从逻辑到应用

Java编程的核心在于将逻辑思维转化为可执行的代码。本专栏通过8个实用案例&#xff0c;覆盖条件判断、循环结构、数组操作、用户交互等基础知识点&#xff0c;展示如何用Java解决实际问题&#xff0c;从简单游戏到数据计算&#xff0c;逐步构建编程思维。 案例一&#xff1a;剪…

Starlink卫星终端对星策略是终端自主执行的还是网管中心调度的?

以下文章首先来源于Google Gemini的Deep Research的内容,在Deep Research的报告参考了SpaceX公开信息、FCC技术报告、相关专利(如US9906292B2)以及学术研究的综合分析,并参考了RFWirelessWorld和APNIC博客等二次来源。 文章完成之后,前后发给了Grok和deepseek,让Grok和d…

【CDA案例】数据分析案例拆解:解锁数据分析全流程!

在当今数字化时代&#xff0c;数据如同一座座金矿&#xff0c;蕴含着巨大的价值。企业、组织乃至个人都渴望从海量的数据中挖掘出有用的信息&#xff0c;以指导决策、优化运营、提升竞争力。今天我们以一个实际的数据分析案例为蓝本&#xff0c;深入拆解其全过程&#xff0c;带…

vulnhub-drippingblues靶场攻略

1.打开靶场&#xff0c;我们将网络连接方式改为NAT模式2.然后使用nmap扫描一下nat的网段3.存在21&#xff0c;22&#xff0c;80端口我们先来看一下21端口的ftp协议&#xff0c;发现可以直接匿名登录&#xff0c;并且可以下载存在的东西4.但是这个压缩包被加密了&#xff0c;我们…

afsim2.9_使用QtCreator和VSCode编译

使用QtCreator和VSCode编译AFSIM2.9源代码指南 准备工作 在开始编译AFSIM2.9源代码前&#xff0c;需要确保您的开发环境满足以下条件&#xff1a; 安装QtCreator安装Visual Studio Code&#xff08;最新稳定版&#xff09;获取AFSIM2.9源代码包安装必要的编译工具链&#xf…

TC39x STM(System Timer)学习记录

STM有哪些特性&#xff1f;自由运行的 64 位计数器所有 64 位可同步读取可同步读取 64 位计数器的不同 32 位部分基于与 STM 部分内容的比较匹配&#xff0c;灵活地产生服务请求在应用复位后自动开始计数若 ARSTDIS.STMxDIS 位清零&#xff0c;应用复位将复位 STM 寄存器&#…

css初学者第四天

<1>snipaste工具的使用snipaste是一个简单但强大的截图工具&#xff0c;也可以让你将截图贴回屏幕上。常用的快捷方式&#xff1a;1、F1可以截图&#xff0c;同时测量大小&#xff0c;设置箭头 书写文字等2、F3在桌面置顶显示3、点击图片&#xff0c;alt可以取色&#xf…

CompletableFuture实现Excel 多个sheet页批量导出

CompletableFuture实现Excel 多个sheet页批量导出 文章目录 CompletableFuture实现Excel 多个sheet页批量导出 为什么不能直接合并文件或Sheet? 我的方案合理性 1. 操作实现步骤 1.1、导入所需要的依赖 1.2 、Excel 导入导出对象 1.3、异步生成 Excel 文件到指定路径 1.4、合并…

搭建本地 Git 服务器

以下是搭建本地 Git 服务器的通用步骤&#xff0c;支持团队协作或私有仓库管理&#xff1a;方法 1&#xff1a;基于 SSH 的简单部署&#xff08;适合小团队&#xff09; 步骤 1&#xff1a;安装 Git 在服务器上安装 Git&#xff08;以 Ubuntu 为例&#xff09;&#xff1a; sud…

【Matplotlib】中文显示问题

中文显示问题本地Mac上作图&#xff0c;可以方便地实现中文字体显示。比如在Jupter中&#xff0c;通过&#xff1a;方法一&#xff1a;不下载字体库即可实现中文显示 (MAC)plt.rcParams[font.family][Arial Unicode MS]方法二&#xff1a;下载指定字体训即可实现中文显示plt.rc…

从“单体崩溃”到“稳定如山”:Java 构建高可用、低耦合架构实战指南

引言&#xff1a; 你是否经历过这样的痛苦&#xff1f;某个模块突然异常&#xff0c;整个系统瞬间崩盘&#xff0c;排查日志堆积如山&#xff0c;客户投诉不断。系统耦合严重、容错性差&#xff0c;成了上线最忌惮的“隐雷”。 而今天&#xff0c;我们要带你深入剖析如何通过事…

人工智能正在学习自我提升的方式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Numpy基础(广播机制)

广播机制 Numpy的Universal functions中要求输入的数组shape是一致的&#xff0c;当数组的shape不相等 时&#xff0c;则会使用广播机制。不过&#xff0c;调整数组使得shape一样&#xff0c;需要满足一定的规则&#xff0c;否则将 出错。这些规则可归纳为以下4条。 1&#xff…

reuse: for booting my spring project with mvn in Windows command line

boot.bat echo off setlocal enabledelayedexpansion:: 定义帮助信息 set HELP_MSG使用方法: %0 [选项,可选-m,-j,-h] [参数...]:: 默认启动方式为 mvn set MODEmvn set ARGS:: 解析命令行参数 :parse_args if "%~1""" goto end_parseif "%~1"&q…

NodeJs学习日志(4):路由合并_环境配置_常用文件目录

路由合并_环境配置_常用文件目录 路由合并 // routes/routes.js const express require(express); const router express.Router();// 合并子路由 var indexRouter require(../routes/index); var usersRouter require(../routes/users);router.use(/, indexRouter); route…