QListItem添加自定义的Widget

QListWidgetItem* item = new QListWidgetItem;
ui->listWidget->addItem(item);
item->setSizeHint(QSize(100,60));
MyDiyItem* diyItem = new MyDiyItem(this);
ui->listWidget->setItemWidget(item, diyItem);

QListWidget动态删除item

根据item名字删除

QList<QListWidgetItem*> list = ui->listWidget->findItems(u8"编辑", Qt::MatchFlag::MatchCaseSensitive);
QListWidgetItem* delItem = list[0];
int row = ui->listWidget->row(delItem);
QListWidgetItem* item = ui->listWidget->takeItem(row);
ui->listWidget->removeItemWidget(item);
delete item;

删除当前选中的

QListWidgetItem* current = ui->listWidget->currentItem();
ui->listWidget->removeItemWidget(current);
delete current;

QListWidgetItem添加右键菜单

// 必须设置,否则无法显示菜单
ui->listWidget->setContextMenuPolicy(Qt::ContextMenuPolicy::CustomContextMenu);
connect(ui->listWidget, &QListWidget::customContextMenuRequested, this,&ListWidget::on_PopupRightMenu);

void ListWidget::on_PopupRightMenu(const QPoint& point) {
    QListWidgetItem* item = ui->listWidget->itemAt(point);
    if (item) {
        menu->exec(QCursor::pos());
    }
}

QListWidget图标模式固定列数显示

// 不显示水平滚动条
ui.listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// 只有需要时才显示垂直滚动条
ui.listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);