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
英文地址,請注明出處:http://en.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…