Qt实现水平方向(横向)流式布局FlowLayout简单又实用!提供2种最有用的方法!

在Qt中实现水平方向(横向)流式布局有两种方法:

方法一:使用QListView或者QListWidget基础控件,这两个控件是可以直接设置水平方向自动换行的流式布局的:

优点:

1.由于QListViewmodel/view结构,所以在支持流式布局的同时,还可以通过model实现搜索、过滤、排序、拖拽交互两个项等高级功能!数据量大时的增删改查都挺方便。

2.自带滚动条,当显示不完全时可以使用滚动条滚动可视范围。

缺点:

1.用起来复杂一些,相对于QLayout消耗大一些。

2.它无法单独调整水平或者垂直方向的间距,listView->setSpacing()会让子项与子项之间的间距变成双倍,子项与QListView边框间距才是一倍,难调的一批莫名其妙的,这时只能用setGridSize()来先预先设置每个子项的大小预留水平和垂直方向的间距,一旦使用setGridSize(),那么子项与子项的通过setSpacing()设置的间距会失效,只有子项与QListView整体边框的间距还有效。听我这么说就知道,这有多难调整子项间距问题。。。

方法二:使用布局管理器QLayout及其子类,Qt中常见的布局管理器有:

QHBoxLayout:水平布局(常用)

QVBoxLayout:垂直布局(常用)

QGridLayout:表格布局(常用)

QFormLayout:表单布局(很少用)

QStackedLayout:堆栈布局(罕见使用)

这些布局管理器都不能设置自动换行的流式布局(FlowLayout)。不过Qt 官方提供了一个流式布局管理器 FlowLayout 的例子,但并没有将其收录进基础模块中(要是收录了,应该叫QFlowLayout),而是以源码.h/.cpp的形式直接给出了可运行测试的Demo程序。

优点:

1.该类继承自 QLayout,意味着它可以直接被QWidget及其子类通过se

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值