您的位置:首页 > 编程语言 > Qt开发

关于 QListWidget IconMode的使用

2015-11-22 09:30 591 查看
最初接触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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Qt QListWidget IconMode