QListWidget中添加QListWidgetItem的几种形式

简介: QListWidget中添加QListWidgetItem的几种形式

本文介绍QListWidget中添加QListWidgetItem的几种形式:

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 1
    ui->listWidget->addItem(new QListWidgetItem(QIcon(":/new/prefix1/hat.png"), "123"));
    // 2
    addListWidgetItem("123");
    // 3
    custommodel *model = new custommodel(ui->listView);
    ui->listView->setModel(model);
    // 4
    QListWidgetItem *pItem = new QListWidgetItem(ui->listWidget, 0);
    pItem->setSizeHint(QSize(300, 60));
    QSize size = pItem->sizeHint();
    CustomListItemWidget *pCustomListItemWidget = new CustomListItemWidget(ui->listWidget);
    pCustomListItemWidget->setFixedSize(size);
    ui->listWidget->setItemWidget(pItem, pCustomListItemWidget);
}

第一种是直接使用QListWidgetItem,第二种是添加一个widget进去:

void Widget::addListWidgetItem(QString strText)
{
    QListWidgetItem *pItem = new QListWidgetItem(ui->listWidget, 0);
    pItem->setSizeHint(QSize(ui->listWidget->width(), 60));
    QSize size = pItem->sizeHint();
    QWidget *pWidget = new QWidget(ui->listWidget);
    pWidget->setFixedSize(size);
    QLabel *pLabel1 = new QLabel(pWidget);
    pLabel1->setPixmap(QPixmap(":/new/prefix1/hat.png"));
    pLabel1->setScaledContents(true);
    QLabel *pLabel2 = new QLabel(pWidget);
    pLabel2->setText(strText);
    QLabel *pLabel3 = new QLabel(pWidget);
    pLabel3->setText(strText);
    QHBoxLayout *Hboxlayout = new QHBoxLayout(pWidget);
    Hboxlayout->addWidget(pLabel1);
    Hboxlayout->addWidget(pLabel2);
    Hboxlayout->addWidget(pLabel3);
    ui->listWidget->setItemWidget(pItem, pWidget);
}

第三种是使用model

int custommodel::columnCount(const QModelIndex &parent) const
{
    return 1;
}
QVariant custommodel::data(const QModelIndex &index, int role) const
{
  //这里不能直接写return QVariant(QString::fromLocal8Bit("关注微信公众号:高二的笔记"));
  //必须加上判断role == Qt::DisplayRole
    if(role == Qt::DisplayRole)
    {
        return QVariant(QString::fromLocal8Bit("关注微信公众号:高二的笔记"));
    }
    return QVariant();
}
QModelIndex custommodel::index(int row, int column, const QModelIndex &parent) const
{
    return createIndex(row, column);
}
QModelIndex custommodel::parent(const QModelIndex &index) const
{
    return QModelIndex();
}
int custommodel::rowCount(const QModelIndex &parent) const
{
    return 3;
}
//This view does not display horizontal or vertical headers; to display a list of items with a horizontal header, use QTreeView instead.
QVariant custommodel::headerData(int section, Qt::Orientation orientation, int role) const
{
    if(role == Qt::DisplayRole)
    {
     return QVariant("BING");
    }
    return QVariant();
}

第四种实质还是添加widget,不过是使用setItemWidget添加一个自定义的widget

效果图:

工程源码地址:https://gitee.com/gao-yuelong/qtdemo/tree/master/listwidget

相关文章
|
2月前
|
索引
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
182 3
|
2月前
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Combo Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Combo Box的使用及说明
190 0
|
5月前
【qt】QTableWidget 表格组件2
【qt】QTableWidget 表格组件
53 0
|
5月前
【qt】QTableWidget 表格组件3
【qt】QTableWidget 表格组件
38 0
|
5月前
【qt】QTableWidget 表格组件1
【qt】QTableWidget 表格组件
39 0
|
5月前
|
C++
[Qt5&控件] Label控件显示文本内容(字符串和整数)
[Qt5&控件] Label控件显示文本内容(字符串和整数)
124 0
[Qt5&控件] Label控件显示文本内容(字符串和整数)
|
11月前
《QT从基础到进阶·十》QTableView,QTableWidget,QLineEdit设置只读和输入限制
《QT从基础到进阶·十》QTableView,QTableWidget,QLineEdit设置只读和输入限制
262 0
|
Web App开发 索引
Qt之QTableView显示富文本
简述 对于QTableView中的显示,我们前面介绍过很多种,其中包括:文本、进度条、复选框等,今天我们介绍一下关于富文本的显示。 可能绝大多数小伙伴会通过QAbstractTableModel中的data来实现,可是现实告诉我们,那是行不通的,那么我们如何去显示呢?请看正文。 简述 效果 源码 分析 效果 源码 下面我们使用QAbstrac
1031 0
QT应用编程: 导出QTableWidget数据写入到Execl表格
QT应用编程: 导出QTableWidget数据写入到Execl表格
500 1