API
void QListWidget::addItem(QListWidgetItem *aitem);
void QListWidget::removeItemWidget(QListWidgetItem *aItem);
//判断指定坐标是否在item上
QListWidgetItem *QListWidget::itemAt(int ax, int ay);
QListWidgetItem *currentItem() const;
QListWidgetItem *takeItem(int row);
Demo
如下demo是展示基本添加QListWidgetItem用法,支持基本数据类型和自定义Item,
如下自定义item是CUserItem结构需要通过setItemWidget方法设置
QListWidget* listWidget = new QListWidget(leftWidget);
QListWidgetItem *item1 = new QListWidgetItem("item1");
QListWidgetItem *item2 = new QListWidgetItem("item2");
QListWidgetItem *item3 = new QListWidgetItem("item3");
QListWidgetItem *item4 = new QListWidgetItem;
listWidget->addItem(item1);
listWidget->addItem(item2);
listWidget->addItem(item3);
listWidget->addItem(item4);
//自定义item
CUserItem *pUserItem = new CUserItem(this);
listWidget->setItemWidget(item4, pUserItem);
支持右键菜单项


void Widget::initRightMenu()
{
m_pRightMenu = new QMenu(this);
QAction *ac1 = new QAction("ac1");
QAction *ac2 = new QAction("ac2");
QAction *ac3= new QAction("ac3");
QAction *ac4 = new QAction("delete");
m_pRightMenu->addAction(ac1);
m_pRightMenu->addAction(ac2);
m_pRightMenu->addAction(ac3);
m_pRightMenu->addAction(ac4);
//点击删除
connect(ac4, &QAction::triggered, this, [=](){
//第一种删除方式,通过text动态删除
// QList<QListWidgetItem*> list;
// list = listWidget->findItems("ac1", Qt::MatchCaseSensitive);
// QListWidgetItem *sel = list[0];
// int row = listWidget->row(sel);
// QListWidgetItem *item = listWidget->takeItem(row);
// listWidget->removeItemWidget(item);
// delete item;
//第二种方式
QListWidgetItem *item = listWidget->currentItem();
listWidget->removeItemWidget(item);
delete item;
});
}
QListWidget图标模式

