Qt 模型视图 - QListWidget(1)

文章介绍了如何在Qt环境中使用QListWidget创建列表,并通过自定义Item类实现更复杂的功能,如添加头像、右键菜单等。同时对比了QListWidget和QListView的适用场景,QListWidget适合简单列表展示,而QListView适合需要高度定制和复杂交互的场景。

1 简要

QListWidget是一个便利的类,是用于显示列表的控件。它提供了一个类似于QListView所提供的列表视图,具有用于添加和删除项的经典的基于项的接口,QListWidget的内部模型由QListWidgetItem来管理。

  • QListWidget的优势在于它易于使用,尤其是对于不熟悉模型-视图编程的开发人员来说,利用它可以快速构建一个列表窗口,并且可以支持多种操作,如复选框、图标等。
  • QListView类相比之下更加灵活,它不需要使用QListWidget类的那些额外功能,因此更加轻量级,可以更方便地自定义实现。QListView可以使用QAbstractItemModel类或其子类作为数据模型,可以自定义项的展示方式和交互。

开发环境

  • 系统:Window10
  • Qt版本:5.14.2
  • 编译器:MinGW_64

2 实现效果

在这里插入图片描述 在这里插入图片描述

3 实现步骤

3.1 创建一个自定义信息Item类

由于QListWidget类提供的函数只有添加QString、QListWidgetItem的项,无法满足自定义的需求。所以需要自定义一个继承自QWidget的信息类。并通过setItemWidget()函数将自己的类添加到Item里,这种方式的好处在于在Item里可以放很多不同的部件以及自定义布局等。

/**
 * @brief 自定义信息Item类
 */
class CustomizeItem : public QWidget
{
   
   
    Q_OBJECT
public:
    explicit CustomizeItem(QWidget *parent = nullptr);

    void setHeadPath(const QString &path);
    void setName(const QString &name);
    void setInfo(const QString &info);
    void setTime(const QString &time);

protected:
    bool eventFilter(QObject *watched, QEvent *event) override;
    void resizeEvent(QResizeEvent *event) override;
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值