Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从listWidget中删除所选项目_C++_Qt_Qt5_Qlistwidget - Fatal编程技术网

C++ 从listWidget中删除所选项目

C++ 从listWidget中删除所选项目,c++,qt,qt5,qlistwidget,C++,Qt,Qt5,Qlistwidget,如何从qlistWidget中删除所选项目 我已经尝试编写以下代码,但没有成功 QList<QListWidgetItem*> items = ui->listWidget->selectedItems(); foreach(QListWidgetItem item, items){ ui->listWidget->removeItemWidget(item); } QList items=ui->listWidget->selectedItems(

如何从
qlistWidget
中删除所选项目

我已经尝试编写以下代码,但没有成功

QList<QListWidgetItem*> items = ui->listWidget->selectedItems();
foreach(QListWidgetItem item, items){
    ui->listWidget->removeItemWidget(item);
}
QList items=ui->listWidget->selectedItems();
foreach(QListWidgetItem、items){
ui->listWidget->removeItemWidget(项目);
}

现在,如何删除我从
qlistWidget
中选择的项目?

qlistWidget
中删除项目的一种方法是使用
qlistWidget::takeItem
删除并返回项目:

QList<QListWidgetItem*> items = ui->listWidget->selectedItems();
foreach(QListWidgetItem * item, items)
{
    delete ui->listWidget->takeItem(ui->listWidget->row(item));
}

要使用
removeItemWidget
提供解决方案:

QList<QListWidgetItem*> items = ui->listWidget->selectedItems();

foreach(QListWidgetItem* item, items){
    ui->listWidget->removeItemWidget(item);
    delete item; // Qt documentation warnings you to destroy item to effectively remove it from QListWidget.
}
QList items=ui->listWidget->selectedItems();
foreach(QListWidgetItem*item,items){
ui->listWidget->removeItemWidget(项目);
delete item;//Qt文档警告您销毁项以有效地将其从QListWidget中删除。
}

为什么项目不是指针?@武强:我已经将
项目
更改为
*项目
。但仍然不想删除项目或任何项目。回答得好。请注意,
qDeleteAll
的示例是说明性的。。。。它仅删除用户界面中选定的项目<代码>QdeletAll(ui->listWidget->items())清除所有条目。一般来说,
qDeleteAll(一些有效数据列表)完成了这项工作。谢谢,但是第一种方法出现了一个错误
QModelIndex QListWidget::indexFromItem(QListWidgetItem*)const'受保护
@LionKing您是对的。您应该使用
QListWidget::row
。答案已更新。@Youda008
removitemWidget
仅删除项目上设置的小部件。要删除整行,应使用
takeItem
,并将其删除以释放内存。看:@Nejat:上面说的是手册。但是我不明白
删除项目上设置的小部件是什么意思。什么是
小部件集
,或者
在项目上设置小部件
意味着什么??
QList<QListWidgetItem*> items = ui->listWidget->selectedItems();

foreach(QListWidgetItem* item, items){
    ui->listWidget->removeItemWidget(item);
    delete item; // Qt documentation warnings you to destroy item to effectively remove it from QListWidget.
}