QListWidget的RemoveItemWidget和TakeItem区别

  1. removeitemwidet只是删除该item对应的widget,不会删除该item,如果这个item有Qstring,该qstring会保留下来;
  2. takeitem直接删除该item;
  3. clear函数清除所有的item。
测试程序:
QListWidget _userListW=new QListWidget; _userListW->insertItem(0, "sadf"); _userListW->setItemWidget(_userListW->item(0), new QLabel("2e3")); _userListW->insertItem(1, "sadf"); _userListW->setItemWidget(_userListW->item(1), new QLabel("2e3")); int itemcount=_userListW->count(); //保留用户自定义图层的第一行:文件选择 while (_userListW->count()>0) { _userListW->removeItemWidget(_userListW->item(0)); itemcount = _userListW->count(); _userListW->takeItem(0); itemcount = _userListW->count(); } //_userListW->clear();

【QListWidget的RemoveItemWidget和TakeItem区别】此处,循环体内,执行remove后itemcount不会变化,执行take后itemcount减一。
如果不执行take,执行removeitemwidget后,第一行存入的字符串sadf仍然会保留下来。

    推荐阅读