关于 QListWidget IconMode的使用

最初接触Qt编程时,只知道QListView/QListWidget只是由上而下的列表模式ListMode,现在才知道还可以是从左到右的图标模式IconMode,这可以用setViewMode(ViewMode mode)设置。

setViewMode(QListView::ViewMode);

为了使调整窗口大小时元素自动重新布局填充要使用 setResizeMode(ResizeMode mode) ,这里取Adjust

setResizeMode(QListView::Adjust);

这里有个问题,就是窗口宽度变化时,右边会有一段空白在足够放下一个元素之前,这样会让强迫症的人觉得不舒服。

所以我想到了重写resizeEvent(QResizeEvent *event),不断重设元素宽度

void resizeEvent(QResizeEvent *event)

{

int layW = width(); //这里滚动条scrollBar关闭的情况,排列元素的空间宽度

int itemW = 50; //比如元素最小宽度要这么大

int itemH = 50; //元素需要的高度

int maxColumn = layW / (itemW + 1); //一行至多放多少个元素,加一可能是因为布局时grid占用一个点,我也是因为之前没这样,一直不成功

int newItemW = layW / maxColumn; //重新算出元素的宽度

for (int i = 0; i < count(); ++i)

{

item(i)->setSizeHint(newItemW - 1, itemH); //重新设元素宽度,拉大间距一样填充满空间

}

QListView::resizeEvent(event);

}

我也不知道上面的方法是不是笨方法。

setViewMode(QListView::ViewMode);
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值