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

来源:互联网 发布:37传奇霸业 血符数据 编辑:程序博客网 时间:2024/06/05 20:42

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
classcustomItem1 : publicQWidget
{
    Q_OBJECT
public:
    explicitcustomItem1(QWidget *parent, constQIcon& icon1,
                         constQString& text1, constQString& text2);
 
signals:
 
publicslots:
 
private:
    QLabel icon1;
    QLabel text1;
    QLabel text2;
};
 
classcustomItem2 : publicQWidget
{
    Q_OBJECT
public:
    explicitcustomItem2(QWidget *parent,
                         constQIcon& icon1, constQIcon& icon2,
                         constQString& text1, constQString& text2);
 
signals:
 
publicslots:
 
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);
原创粉丝点击