免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4845 | 回复: 5
打印 上一主题 下一主题

如何获得widget的尺寸 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-03 11:11 |只看该作者 |倒序浏览
如何获得toolbar, image等控件的当前尺寸, 使用gtk_widget_size_request试过,得到的不是当前尺寸

论坛徽章:
0
2 [报告]
发表于 2008-09-03 12:37 |只看该作者

回复 #1 keensword007 的帖子

可以使用widget的allocation获得尺寸, 但是我在window的configure-event中获得尺寸,感觉不太对,需要事件完成后才会设置子元素,应该在什么事件中获得呢?

我的目的只有一个,就是在调整窗口大小时,将窗口中的image控件中的图片进行缩放,以适应窗口大小,但是不知道如何知道窗口分配给image的尺寸是多少

论坛徽章:
0
3 [报告]
发表于 2008-09-04 21:20 |只看该作者
看下

论坛徽章:
0
4 [报告]
发表于 2008-09-06 15:15 |只看该作者

回复 #1 keensword007 的帖子

gtk中默认的控件的大小?干嘛要用它默认的大小??在最开始的时候你自己给它定义一个大小,用gtk_widget_set_size_request ()函数来设置,然后大小你不就知道了,等到你想要变大或变小的时候你就给它变一下就好了。

论坛徽章:
0
5 [报告]
发表于 2008-09-10 12:54 |只看该作者

回复 #4 capable 的帖子

我就是希望得到实际的尺寸,比如说,当我调整窗口大小时,我希望能够得到窗口中image的大小,这样我就可以根据image的尺寸对其中的图像进行缩放.但是在窗口调整大小触发的事件中我只能得到当前窗口的大小

论坛徽章:
0
6 [报告]
发表于 2008-09-11 14:19 |只看该作者
原帖由 keensword007 于 2008-9-10 12:54 发表
我就是希望得到实际的尺寸,比如说,当我调整窗口大小时,我希望能够得到窗口中image的大小,这样我就可以根据image的尺寸对其中的图像进行缩放.但是在窗口调整大小触发的事件中我只能得到当前窗口的大小


你的思路一开始就错了。
gtk里有自己的size negotiation。
每个GtkWidget在决定自己大小的时候会首先查看所有child的size request,通过child的request决定自己的request。
然后一直传到最顶层窗口,它根据所有子widget的size_quest和自己的default size,根据自身的是gtkbin还是gtkvbox还是gtkhbox,使用gtk_widget_size_allocate分配每个child的大小。
然后再一层层size_allocate下去。

我不知道gtk里有没有你需要的GtkContainer,没有的话,自己从GtkBin派下来一个widget,重载size_quest和size_allocate,
在这两个函数里设置image的大小。

参考 http://developer.gnome.org/doc/G ... SEC-SIZENEGOTIATION
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP