Qt100_QListWidget添加 / 删除 自定义Item

一. 效果

使用QWidget作为QListWidget的Item,测试程序效果如下(下面内容包含测试程序源代码):
在这里插入图片描述

二. 步骤

使用QWidget作为QListWidget的Item的步骤如下

1. 定义要作为QListWidget的Item的自定义的QWidget
class CItemWidget : public QWidget

2. 创建自定义的QWidget并和QListWidget的Item关联起来

CItemWidget* pItemWidget = new CItemWidget(this);
QListWidgetItem* pItem = new QListWidgetItem();
pItem->setSizeHint(QSize(350, 40));
ui->listWidget->addItem(pItem);
ui->listWidget->setItemWidget(pItem, pItemWidget);

注意:如果要QListWidget的每行显示多个自定义的QWidget,则需进行下面的设置

ui->listWidget->setResizeMode(QListView::Adjust);
ui->listWidget->setViewMode(QListView::IconMode);

三. 测试程序及效果

ItemWidget.h

#ifndef ITEMWIDGET_H
#define ITEMWIDGET_H
 
#include <QWidget>
namespace Ui {
class CItemWidget;
}
 
class CItemWidget : public QWidget
{
    Q_OBJECT
 
public:
    explicit CItemWidget(QWidget *parent = 0);
    ~CItemWidget();
 
    //设置数据
    void SetData(const QString& qstrFileName, int iFileSize, const QString& qstrPic);
 
private:
    Ui::CItemWidget *ui;
};
 
#endif // ITEMWIDGET_H

ItemWidget.cpp

#include "ItemWidget.h"
#include "ui_ItemWidget.h"
 
CItemWidget::CItemWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::CItemWidget)
{
    ui->setupUi(this);
}
 
CItemWidget::~CItemWidget()
{
    delete ui;
}
 
void CItemWidget::SetData(const QString& qstrFileName, int iFileSize, const QString& qstrPic)
{
    ui->label_fileName->setText(qstrFileName);
    ui->label_fileSize->setText(QString::number(iFileSize));
 
    QPixmap pixmapPic(qstrPic);
    int iWidth = ui->label_pic->width();
    int iHeight = ui->label_pic->height();
    QPixmap pixmapPicFit = pixmapPic.scaled(iWidth, iHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);//饱满填充
    ui->label_pic->setPixmap(pixmapPicFit);
}

MainWidget.h

#ifndef MAINWIDGET_H
#define MAINWIDGET_H
 
#include <QWidget>
 
namespace Ui {
class CMainWidget;
}
 
class CMainWidget : public QWidget
{
    Q_OBJECT
 
public:
    explicit CMainWidget(QWidget *parent = 0);
    ~CMainWidget();
 
private:
    Ui::CMainWidget *ui;
 
    //添加Item
    void AddItem(const QString& qstrFileName, int iFileSize, const QString& qstrPic);
};
 
#endif // MAINWIDGET_H

MainWidget.cpp

#include "MainWidget.h"
#include "ui_MainWidget.h"
#include "ItemWidget.h"
 
CMainWidget::CMainWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::CMainWidget)
{
    ui->setupUi(this);
 
    ui->listWidget->setResizeMode(QListView::Adjust);
    ui->listWidget->setViewMode(QListView::IconMode);
 
    AddItem("Video1", 1024, ":/images/video_1.png");
    AddItem("Video2", 2048, ":/images/video_2.png");
    AddItem("Video3", 3072, ":/images/video_3.png");
    AddItem("Video4", 4096, ":/images/video_4.png");
    AddItem("Video5", 5120, ":/images/video_1.png");
}
 
CMainWidget::~CMainWidget()
{
    delete ui;
}
 
void CMainWidget::AddItem(const QString& qstrFileName, int iFileSize, const QString& qstrPic)
{
    CItemWidget* pItemWidget = new CItemWidget(this);
    pItemWidget->SetData(qstrFileName, iFileSize, qstrPic);
    
    QListWidgetItem* pItem = new QListWidgetItem();
    pItem->setSizeHint(QSize(350, 40));
    ui->listWidget->addItem(pItem);
    ui->listWidget->setItemWidget(pItem, pItemWidget);
}

main.cpp

#include "MainWidget.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    CMainWidget w;
    w.show();
 
    return a.exec();

删除自定义的Item

void Widget::uninstallGameslots(int index)
{
    QListWidgetItem* item = ui->listWidget_2->currentItem();//被选中或背点击的item删除
    //    QListWidgetItem* item = ui->listWidget_2->takeItem(index);//指定删除
    ui->listWidget->removeItemWidget(item);
    delete item;
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值