Qt在ListWidget中添加自定义ListItem对象


Qt中的QListWidget可以实现一个列表,比如网页上经常出现的下拉列表框,其中一行就是一个ListItem,在添加时,常用的函数是QListWidget::addItem(QListWidgetItem * item),但这样只能添加QListWidgetItem这样的对象,如果想到像QQ等软件使用自定义的ListItem,一个简单的方法是自定义一个QWidget,然后使用QListWidget::setItemWidget(QListWidgetItem * item, QWidget * widget)来设置它的显示widget.



自定义一个widget

首先,自定义了一个QWidget,作为QListWidgetItem的子元素,所有的布局都在这个widget中完成,它便是后来显示的每个小条目.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class customItem1 : public QWidget
{
     Q_OBJECT
public :
     explicit customItem1(QWidget *parent, const QIcon& icon1,
                          const QString& text1, const QString& text2);
 
signals:
 
public slots:
 
private :
     QLabel icon1;
     QLabel text1;
     QLabel text2;
};
 
class customItem2 : public QWidget
{
     Q_OBJECT
public :
     explicit customItem2(QWidget *parent,
                          const QIcon& icon1, const QIcon& icon2,
                          const QString& text1, const QString& text2);
 
signals:
 
public slots:
 
private :
     QLabel icon1;
     QLabel icon2;
     QLabel text1;
     QLabel text2;
};

添加自定义Item

首先,添加一个QListWidgetItem,然后为其设置Widget为我们自定义的Widget:

?
1
2
3
4
5
6
customItem1 *custom1 = new customItem1( this , icon1, text1, text2);
     QListWidgetItem *listItem1 = new QListWidgetItem();
     listItem1->setSizeHint(QSize(0, 50));
 
     ui->listWidget->addItem(listItem1);
     ui->listWidget->setItemWidget(listItem1, custom1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值