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();

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

你可能感兴趣的:(QT项目实验)