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

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.lryc.cn/news/613781.html

相关文章:

  • GUI:QT简介
  • C# GUI程序中的异步操作:解决界面卡顿的关键技术
  • 频谱图学习笔记
  • HTTP 请求返回状态码和具体含义?200、400、403、404、502、503、504等
  • Docker搭建Jenkins实现自动部署:快速高效的持续集成之道!
  • 五十五、【Linux系统nginx服务】nginx安装、用户认证、https实现
  • 芯伯乐XBL6019 60V/5A DC-DC升压芯片的优质选择
  • 查看泰山派 ov5695研究(1)
  • 【重磅发布】flutter_chen_keyboard -专注于键盘相关功能
  • MFC扩展库BCGControlBar Pro v36.2:MSAA和CodedUI测试升级
  • Kotlin 数据容器 - MutableList(MutableList 概述、MutableList 增删改查、MutableList 遍历元素)
  • 【Qt开发】常用控件(二) -> enabled
  • 日本站群服务器与普通日本服务器对比
  • 服务器硬件电路设计之I2C问答(一):为什么I2C总线要加上拉电阻?
  • 汉明码:从原理到实现的深度解析
  • UniApp Vue3 TypeScript项目中使用xgplayer播放m3u8视频的显示问题
  • Emacs 折腾日记(二十九)—— 打造C++ IDE
  • 机柜内部除了服务器还有哪些组件?
  • 微软发布Project Ire项目:可自主检测恶意软件的人工智能系统
  • 微软公布Windows 2030,要彻底淘汰鼠标、键盘
  • 【概率论】均匀分布的伪随机数
  • WebForms 实例
  • 零成本建站:将 Windows 电脑变身为个人网站服务器
  • 如何规范你的Git commit?
  • WEEX参与欧洲两场重要Web3线下活动,助力社区协作与技术交流
  • 网络安全初学者学习心得
  • 半精度权重 及 Phi-3线性层的权重分布
  • Java基础知识总结
  • 若依前后端分离版学习笔记(七)—— Mybatis,分页,数据源的配置及使用
  • php防注入和XSS过滤参考代码