首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScrolledWindow想要无限的空间,如何限制它?

ScrolledWindow想要无限的空间,如何限制它?
EN

Stack Overflow用户
提问于 2013-10-03 14:11:56
回答 1查看 1.5K关注 0票数 2

我在GTK TreeView中创建了一个大型ScrolledWindow,在toplevel窗口中的笔记本( toplevel窗口有一个有限的默认大小)中的一个凸起的ScrolledWindow。

当我在其中创建一个带有ScrolledWindow的TreeView时,它会得到与TreeView占用的空间一样多的空间(这比屏幕大小还要大),并且我的toplevel窗口被调整到无穷大。如何限制ScrolledWindow的分配或其Viewport大小?决定其默认大小的机制是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-03 18:52:17

问题似乎已经解决了。ScrolledWindow的大小申请取决于其POLICY (在各自的方向),并且等于子小部件的请求(treeview),如果设置了POLICY_NEVER,请参见gtkscrolledwindow.c

滚动窗口策略和大小申请处理: gtk大小申请的工作方式如下:

  • 大小请求的小部件报告它认为最适合播放其内容的宽度和高度,包括子部件。
  • 在大小申请时从小部件报告的宽度和/或高度可以由用户通过gtk_widget_set_usize()指定一个宽度和/或高度以外的宽度和/或高度来覆盖。滚动窗口需要(用于改进所有三种策略类型)根据两个不同的理由请求其宽度和高度。

1)用户希望滚动窗口只适合为特定维度分配的空间。

1.1)如果用户通过为滚动窗口或其子窗口指定usize来指定该特定维度的具体值,则这不适用。2)用户希望滚动窗口为特定维度(即POLICY_NEVER)占用子窗口所需的尽可能多的空间。

还有一点很明显:

3)用户当然不会选择滚动窗口作为子容器,如果由此产生的分配占用的空间比没有滚动窗口时所分配的空间要多。

结论:

( A)如下所示:滚动窗口不应该为特定维度请求超过最低要求的空间。

( B)从1.1开始:申请可能因滚动窗口的大小(自动完成)或子窗口的大小(需要检查)而过大。

( C)从2)开始:对于POLICY_NEVER,滚动窗口只报告子维度。

( D)从3)开始:滚动窗口的最小宽度和A下的最小高度)至少对应于滚动条占用的空间。

因此,如果您设置了POLICY_NEVER,ScrolledWindow将为自己请求它的子程序所需的所有位置(如果它的子程序很大,则可能会在屏幕上膨胀)。否则,它将请求绘制滚动条所需的最小值。可能会为它分配比所请求的空间更多的空间,并且它将被扩大到其母公司内的一个合理的大小。

有时,您可能希望有两个ScrolledWindows,共享一个滚动条。不幸的是,不可能仅仅为其中之一设置POLICY_NEVER并拥有scrolled_window1.set_adjustment() = scrolled_window2.get_adjustment(),这是因为政策会影响到申请的大小,而scrolled_window1将开始请求不可预测(可能很大)的空间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19161538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档