gpt4 book ai didi

user-interface - 如何正确设置 GtkLabel 的最大宽度?

转载 作者:行者123 更新时间:2023-12-04 14:27:14 32 4
gpt4 key购买 nike

我正在编写一个 Vala 应用程序并在其中使用 GtkLabels'。问题是,我使我的主窗口无法调整大小,当我向其中添加带有长文本的标签时,窗口变得非常大(当窗口可调整大小时,所有标签都完美匹配)。我试过 set_max_width_chars()到某种值(value)并且它有点工作,但我想这不是正确的方法(因为用户的字体可能会有所不同,这不适用于与我不同的字体大小)。

所以,问题是:如何以正确的方式做到这一点?

最佳答案

您不能直接限制标签的宽度(除了 max-width-chars ,它以字符为单位,而不是以像素为单位),但您可以通过影响包含它的框的大小并通过不立即设置 4 来间接限制它标签的明显属性。

考虑以下场景:

  • 您有一个盒子
  • 您有多个带有小部件的子框
  • 所有小部件都有其自然尺寸,该尺寸可以更大或更小,但总是合理的

  • 结果:
  • 框根据需要展开以适合所有小部件

  • 现在是标签:
  • 一个/一些盒子里有标签(可能有多个标签)
  • 标签文本可以是任何内容,包括很长的字符串
  • 您没有告诉标签换行(这是默认设置)

  • 结果:
  • 框被扩大到荒谬的宽度以容纳标签(其他小部件要小得多)

  • 在这种情况下,可以使用以下修复程序:
  • 套装max-width-chars将标签设置为一个小的正值(1 可以正常工作)
  • 套装ellipsize将标签设置为除 PANGO_ELLIPSIZE_NONE 以外的任何值
  • 套装hexpand标签到 TRUE (或将标签的 expand 设置为 TRUE ,后果很明显)
  • 套装fill标签(作为它所在子框的子框)到 TRUE (如果 vexpand 也是 TRUE ,您可能只想将其填充限制为水平方向)

  • 结果:
  • 框的宽度仅取决于其他小部件的宽度,不受标签文本长度的影响
  • 无论 max-width-chars 的正值有多小,标签都会扩展以填充可用空间(空间仅取决于框的宽度,见上文)。是
  • 如果标签文本太长以至于无法容纳在可用空间中,它将被椭圆化

  • 这适用于具有 ellipsize 的标签和其他文本小部件。和 max-width-chars (例如 GtkCellRendererText 内的 GtkTreeView )。

    使用 GTK+-3.18.2 测试

    关于user-interface - 如何正确设置 GtkLabel 的最大宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462926/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com