listWidget里面设置以下属性:
this->setViewMode(QListView::IconMode);
this->setResizeMode(QListView::Adjust);
this->setMovement(QListView::Static);
流式排布过滤时需要注意:
在流式排布中过滤item采用隐藏的方式时,因为采用的是IconMode模式,所以偶尔会出现排版异常问题;
处理方式:在设置QListWidgetItem的对象隐藏时,如果QListWidgetItem的窗体是自定义的话,那么也需要把子窗体也一起隐藏; 如下:
for(int i=0; i<this->count(); i++){
QListWidgetItem *pItem = this->item(i);
if ( pItem ){
QWidget *pItemWidget = this->itemWidget(pItem);
if ( !pItemWidget ) return ;
CListItem *pClistItem = (CListItem*)(pItemWidget);
bool isItemVisable = pClistItem->data().toString().contains(str, Qt::CaseSensitive);
pItem->setHidden(!isItemVisable);
pClistItem->setHidden(!isItemVisable); //TODO: 注意: 使用IconMode模式时, 除开listWiget的item要隐藏外,自定义的widget也要隐藏
}
}
标签:pItem,QListView,QListWidgetItem,流式,listwidget,排布,隐藏 From: https://www.cnblogs.com/weijian168/p/17351560.html