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

相关文章
|
存储 容器
QT中QListWidget实现QListWidgetItem图片和文字居中
在使用QT开发软件的过程中,很多时候使用QListWidget来实现列表项的功能,比如MS系统的功能模块菜单,如下面2张图所示,其中第一张图是带文字和图标的列表项,第二张图是纯图标的模式,在最近开发的平台客户端的某个功能模块都用上了。
1519 0
|
存储 编解码 Linux
FFmpeg+SDL播放器开发实践:解析、解码、渲染全流程详解
FFmpeg+SDL播放器开发实践:解析、解码、渲染全流程详解
|
开发工具 C++ git
《人生苦短,我用python·三》pybind11简单使用
《人生苦短,我用python·三》pybind11简单使用
1066 0
|
12月前
编译QCefView+VS2019+QT5.15.2
本文介绍了如何编译QCefView项目,并在VS2019和Qt 5.15.2环境下集成,包括编译结果、要点、cmake部署Qt的方法和相关参考链接。
674 2
编译QCefView+VS2019+QT5.15.2
【Qt 学习笔记】Qt窗口 | 浮动窗口 | QDockWidget的使用及说明
【Qt 学习笔记】Qt窗口 | 浮动窗口 | QDockWidget的使用及说明
1327 3
|
12月前
|
Shell
9-17|远端执行date命令报错
9-17|远端执行date命令报错
|
数据可视化
【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明
【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明
2858 3
【qt】QSplitter 分裂器
【qt】QSplitter 分裂器
376 0
|
Linux 图形学
深入理解Qt定时器:QTimer的魅力与挑战(一)
深入理解Qt定时器:QTimer的魅力与挑战
7083 0