在ListWidget中添加自定义的Item


之前看过很多在ListWidget中添加item的方法,但是大部分都没能解决我的问题。

昨天把这个问题解决了,想着把它记下来。留个纪念吧。


先上一个图例。

就像这一样。这个是纯代码实现。以下是纯代码


#include "dialog.h"  
#include "ui_dialog.h"  
#include <QHBoxLayout>  
#include <QMap>  
Dialog::Dialog(QWidget *parent) :  
    QDialog(parent),  
    ui(new Ui::Dialog)  
{  
    ui->setupUi(this);  
  
    widget = new QWidget;
   
    // 设置透明度,当背景色为白色时,这样才能看到选中的颜色
    widget->setStyleSheet("background-color: rgba(255, 255, 255, 0);}");
 

    listwidget = new QListWidget(this);  
    layout = new QHBoxLayout(widget);  
  
  
    lab1 = new QLabel;  
    btn1 = new QPushButton;  
    layout->addWidget(lab1);  
    layout->addWidget(btn1);  
    lab1->setText(tr("把整个widget放入到item中"));  
    btn1->setText(tr("可点击"));  
    widget->setLayout(layout);  
  
  
    QListWidgetItem *aItem = new QListWidgetItem(listwidget);  
  
    listwidget->addItem(aItem);  
    listwidget->setItemWidget(aItem,widget);  
  
    listwidget->setGeometry(0,0,300,350);  
    aItem->setSizeHint(QSize(0,50));  
  
    widget->show();  
}  
  
Dialog::~Dialog()  
{  
    delete ui;  
}  





但是就像我就觉得用代码太麻烦了。用ui设计又快又方便



就像这样,画出一个listwidget 一个widget在widget中按照自己的想法布局


接下来必须到代码中实现“塞入”的动作。

只要在构造函数中用

[cpp]  view plain  copy
  1. QListWidgetItem *nitem = new QListWidgetItem(ui->listWidget);  
  2. ui->listWidget->addItem(nitem);  
  3. ui->listWidget->setItemWidget(nitem,ui->widget);  

这三句就搞定了。不过运行之后会发现


因为item的大小所以导致widget显示不完全。

所以需要注意设置item的大小。建议使用

[cpp]  view plain  copy
  1. aItem->setSizeHint(QSize(0,50));  

这样放大item的大小之后就可以正常显示自定义的widget的内容了。





  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值