关于QGridLayout管理控件的问题~~

yingwenzifu 2012-05-16 04:15:59

问题是这样的:

1.一个固定大小的QWidget,使用QGridLayout管理放置的label;

2.假设需要放置5个label,而且只放置一行.


当这5个label的width之和,远小于QWidget的width时,label之间的间隙非常大,请问:


有没有办法,在不改变label大小的情况下,使这5个label缩小之间的距离到指定的大小,并且靠左对齐~~~~

...全文
660 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huohu8023 2012-11-23
  • 打赏
  • 举报
回复
Horizontal Spacer为弹簧设置一个固定宽度,就能把控件撑开。
yingwenzifu 2012-05-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

为弹簧设置一个固定宽度,就能把控件撑开。

对了,别忘了在最右边也放一根,让它可伸缩,这样就能把控件都顶到左边去。
[/Quote]

setSizeConstraint(QLayout::SetFixedSize)
这一个函数就够了~~~
jdwx 2012-05-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:
为弹簧设置一个固定宽度,就能把控件撑开。

对了,别忘了在最右边也放一根,让它可伸缩,这样就能把控件都顶到左边去。

老大,有没有更厉害的方法啊,因为我需要动态的添加和删除这些label,加弹簧很麻烦的
[/Quote]
两个QHBoxLayout嵌套,里面的和弹簧一组
yingwenzifu 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
派生一个QWidget出来,里面放上一个QLabel,调整好它和Widget间的距离。动态添加这个玩意就行了,连弹簧也省了
[/Quote]
这样做也可以,但是有点呆板了,我在QWidget上放了一个QScrollArea,然后可以通过resize()设置scrollAreaWidget的width就可以搞定了,郁闷的是,不知道scrollAreaWidget哪个参数没设置好,resize()这个函数起不了作用~~
xiachm 2012-05-16
  • 打赏
  • 举报
回复
派生一个QWidget出来,里面放上一个QLabel,调整好它和Widget间的距离。动态添加这个玩意就行了,连弹簧也省了
yingwenzifu 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
为弹簧设置一个固定宽度,就能把控件撑开。

对了,别忘了在最右边也放一根,让它可伸缩,这样就能把控件都顶到左边去。
[/Quote]
老大,有没有更厉害的方法啊,因为我需要动态的添加和删除这些label,加弹簧很麻烦的
xiachm 2012-05-16
  • 打赏
  • 举报
回复
为弹簧设置一个固定宽度,就能把控件撑开。

对了,别忘了在最右边也放一根,让它可伸缩,这样就能把控件都顶到左边去。
xiachm 2012-05-16
  • 打赏
  • 举报
回复
在它们中间放上几根“弹簧”就行了。看看设计器工具栏里的那个Horizontal Spacer
yingwenzifu 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

假设需要放置5个label,而且只放置一行.

QHBoxLayout 这个是行

先放到 行布局,然后在添加到grid里面
[/Quote]
换成QHBoxLayout也一样, 跟使用哪种布局管理器貌似没有什么关系~~
yingwenzifu 2012-05-16
  • 打赏
  • 举报
回复
换成QHBoxLayout也一样, 跟使用哪种布局管理器貌似没有什么关系~~
shen_wei 2012-05-16
  • 打赏
  • 举报
回复
假设需要放置5个label,而且只放置一行.

QHBoxLayout 这个是行

先放到 行布局,然后在添加到grid里面

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧