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

相关文章
|
5月前
|
设计模式 前端开发 API
【Qt 学习笔记】Qt常用控件 | 多元素控件 | 多元素控件介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | 多元素控件介绍
67 2
|
8月前
|
数据库 开发者 Windows
QT 项目视图(QListView&QTreeView&QTableView)和项目部件(QListWidget&QTreeWidget&QTableWidget)详解-2
QT 项目视图(QListView&QTreeView&QTableView)和项目部件(QListWidget&QTreeWidget&QTableWidget)详解
|
8月前
|
XML 设计模式 JSON
QT 项目视图(QListView&QTreeView&QTableView)和项目部件(QListWidget&QTreeWidget&QTableWidget)详解-1
QT 项目视图(QListView&QTreeView&QTableView)和项目部件(QListWidget&QTreeWidget&QTableWidget)详解
|
8月前
【qt】QTableWidget 表格组件1
【qt】QTableWidget 表格组件
63 0
|
8月前
【qt】QTableWidget 表格组件2
【qt】QTableWidget 表格组件
78 0
|
8月前
【qt】QTableWidget 表格组件3
【qt】QTableWidget 表格组件
118 0
|
8月前
|
C++
[Qt5&控件] Label控件显示文本内容(字符串和整数)
[Qt5&控件] Label控件显示文本内容(字符串和整数)
167 0
[Qt5&控件] Label控件显示文本内容(字符串和整数)
|
C# 图形学
Winform控件优化之Paint事件实现圆角组件(提取绘制圆角的扩展方法)
Paint事件方法中实现圆角控件不要通过事件参数`e.ClipRectangle`获取控件区域范围,原因见最后介绍;注意设置控件背景透明(参见[Winform控件优化之背景透明那些事2...
865 0
Winform控件优化之Paint事件实现圆角组件(提取绘制圆角的扩展方法)
《QT从基础到进阶·十》QTableView,QTableWidget,QLineEdit设置只读和输入限制
《QT从基础到进阶·十》QTableView,QTableWidget,QLineEdit设置只读和输入限制
396 0