效果如下:

1、首先我们要设置QListWidget的ViewMode为图片模式IconMode
2、然后确定每个item的大小,重写代理的sizeHint函数
QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override
{
//假如整个QListWidget每行显示4个item,那么每个item的宽度就是整个QListWidget的宽度减去右边的间距(这里还多减了10px,一行才显示了4个,Qt Bug)
//然后除以4,得到每个item的宽度
//然后每个item以正方形为区域
//返回每个item的尺寸
//但是绘制的时候为了显示间距,在每个item的区域绘制时不绘制满,而是将矩形的左上角往内缩spacing的距离
int width = (option.widget->width()-spacing-10) / 4;
qDebug()<<"widget with:"<<option.widget->width();
qDebug()<<"item with:"<<width;
return QSize(width, width);
}

最低0.47元/天 解锁文章
305

被折叠的 条评论
为什么被折叠?



