QListView实现自定义Item

当QListView需要展示复杂内容时,不能直接使用setItemWidget。本文介绍如何通过继承QStyledItemDelegate,重写paint和sizeHint函数,实现自定义Item。首先定义一个结构体作为item数据,然后创建自定义ItemDelegate,调整paint函数以达到所需效果,并通过QListView处理点击事件,最终实现自定义的显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般情况下QListView中的元素可以用QStandardItem表示,但对与一些想要展示复杂内容的情况,QListView并不能向QListWidget一样直接调用setItemWidget实现,需要采用其他方法实现。

为QStandardItem修改QStyledItemDelegate实现自定义Item

QStyledItemDelegate类主要用于为 Model-View 中的数据项提供显示和编辑功能。其在绘制数据项时会调用paint进行渲染。因此可以通过重写paint函数就可以实现自定义数据。

首先自定义一个结构体并完成注册,之后就可以作为item数据 

typedef struct {
    QString iconPath;
    QString title;
    QString subTitle;
    QString content;
    QString time;
} MyItemData;

Q_DECLARE_METATYPE(MyItemData)

之后创建自己的ItemDelegate并继承自QStyledItemDelegate并重写其paint函数

#ifndef UI_WIDGETS_MY_LISTVIEW_ITEM_H_
#define UI_WIDGETS_MY_LISTVIEW_ITEM_H_

#include <QStyledItemDelegate>

class QPainter;
class QWidget;
class QItemDelgate;
class QListView;

namespace ui {

class MyItemDelegate : pub
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值