【问题标题】:How do I remove all the selected items in a QListWidget?如何删除 QListWidget 中的所有选定项目?
【发布时间】:2011-08-10 09:15:13
【问题描述】:

QListWidget::selectedItems 返回 QListWidgetItem 的列表,但我找到的唯一用于删除项目的函数是 takeItem,它只接受索引,并且 selectedIndexes 函数是受保护的。

【问题讨论】:

    标签: c++ qt qlistwidget


    【解决方案1】:

    试试

    qDeleteAll(listWidget->selectedItems());
    

    【讨论】:

    • 这似乎可行,但从帮助看来 qDeleteAll 只是一个通用函数,它在一系列对象上调用 delete 。 QListWidget 不会仍然认为它有这些项目吗?
    • 我发现 this link 解释了它为什么起作用 - QListWidgetItem 的析构函数将它从 QListWidget 中删除。感谢您的回答!
    【解决方案2】:

    遍历 SelectedItemsList:

    QList<QListWidgetItem *> itemList = widget->selectedItems();
    for (int i=0; i<itemList.size(); i++) {
         widget->takeItem(widget->indexFromItem(itemList[i]));
    }
    

    我认为

    widget->removeItemWidget(itemList[i]);
    

    也可以使用

    【讨论】:

    • 来自 Qt takeItem 文档:“从列表小部件中删除的项目不会由 Qt 管理,需要手动删除。”所以你应该说delete widget-&gt;takeItem(...);
    【解决方案3】:

    ui->listWidget->clear(); 会做asof qt5

    【讨论】:

    • 你能解释一下吗?
    • ui->listWidget->clear();将清除列表小部件中的所有先前条目
    • 在 Qt5 QListWidget::clear() 方法可以正常工作,因为@dravgon 说:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 2020-06-19
    • 1970-01-01
    • 2018-04-22
    • 2014-04-29
    • 2018-08-10
    • 2020-10-12
    相关资源
    最近更新 更多