在 GtkScrolledWindow 中控制内容大小

GtkScrolledWindow 部件是 Gtk+ 应用程序开发者的老朋友;它的目的是通过使用滚动条允许大型部件适应小型空间。

GtkScrolledWindow Example
一个垂直 GtkScrolledWindow 的实际应用

自 Gtk+ 3.0 以来,GtkScrolledWindow 能够通过 GtkScrolledWindow:min-content-widthGtkScrolledWindow:min-content-height 属性及其相关函数设置最小内容大小(宽度和高度)。

从下一个稳定版本开始,Gtk+ 还将提供这些属性的最大尺寸对应项。

它们的作用是什么?

顾名思义,最小尺寸属性定义了可滚动区域将具有的最小尺寸,无论是宽度还是高度——即使其子部件没有完全填充可用空间。

scrolledwindow min-content-height
即使子部件没有填充可用空间,滚动窗口也会被分配空间。

另一方面,最大内容大小定义了可滚动区域在开始滚动其内容之前允许增长的最大量。

让我们看看它的实际效果

scroll animation
演示最小和最大内容大小的示例。滚动窗口永远不会小于 110px,也永远不会高于 250px。
在哪里以及如何使用它们

当您想要限制可滚动区域的大小时,您需要使用新属性。例如,GtkPopover 总是将其子部件缩小到它们的最小尺寸。以下部分举例说明如何使内容在宽度和高度上最多增长到 300px

<template>
  <object class="GtkPopover">
    <child>
      <object class="GtkScrolledWindow">
        <property name="visible">True</property>
        <property name="max-content-width">300</property>
        <property name="max-content-height">300</property>
      </object>
    </child>
  </object>
</template>

或者,如果您想以编程方式实现相同的效果,可以调用 gtk_scrolled_window_set_max_content_width()gtk_scrolled_window_set_max_content_height()