GtkLabel

描述 [源码]

final class Gtk.Label : Gtk.Widget
  implements Gtk.Accessible, Gtk.AccessibleText, Gtk.Buildable, Gtk.ConstraintTarget {
  /* No available fields */
}

显示少量文本。

大多数标签用于标记另一个小部件(例如 GtkEntry)。

An example GtkLabel

快捷键和手势

GtkLabel 当光标可见时支持以下键盘快捷键:

  • Shift+F10Menu 打开上下文菜单。
  • Ctrl+ACtrl+/ 选择全部。
  • Ctrl+Shift+ACtrl+\ 取消选择全部。

此外,以下信号具有默认的键绑定:

行为

GtkLabel 定义了一系列内置行为

  • clipboard.copy 将文本复制到剪贴板。
  • clipboard.cut 不做任何事情,因为标签中的文本无法删除。
  • clipboard.paste 不做任何事情,因为标签中的文本无法编辑。
  • link.open 当在标签内的链接上激活时,打开链接。
  • link.copy 当在标签内的链接上激活时,将链接复制到剪贴板。
  • menu.popup 打开上下文菜单。
  • selection.delete 不做任何事情,因为标签中的文本无法删除。
  • selection.select-all 选择全部文本,如果标签允许选择。

CSS 节点

label
├── [selection]
├── [link]
┊
╰── [link]

GtkLabel 有一个名为 label 的单一 CSS 节点。可以为标签应用各种样式类,如 .title、.subtitle、.dim-label 等。在 GtkShortcutsWindow 中,标签使用 .keycap 样式类。

如果标签有选择,它会获得一个名为 selection 的子节点。

如果标签有链接,则每个链接有一个子节点。这些子节点根据它们是否被访问携带链接或访问状态。在这种情况下,标签节点也获得一个 .link 样式类。

作为可构建的 GtkLabel

GtkBuildable 接口的 GtkLabel 实现支持一个自定义的 <attributes> 元素,该元素支持任意数量的 <attribute> 元素。此 <attribute> 元素具有名为“name”、“value”、“start”和“end”的属性,您可以使用此 PangoAttribute 值指定此标签。

UI 定义片段示例,指定 Pango 属性

<object class="GtkLabel">
  <attributes>
    <attribute name="weight" value="PANGO_WEIGHT_BOLD"/>
    <attribute name="background" value="red" start="5" end="10"/>
  </attributes>
</object>

起始和结束属性指定 Pango 属性应用的字符范围。如果未指定起始和结束,则属性应用于全部文本。注意,指定范围与可翻译属性不甚合理。相反,请使用嵌入在可翻译内容中的标记。

无障碍性

GtkLabel 使用 GTK_ACCESSIBLE_ROLE_LABEL 角色。

快捷键

标签可能包含“助记符”。助记符是标签下划线的字符,用于键盘导航。助记符是在保留字符之前提供带有下划线的字符串,例如"_File",传递到函数gtk_label_new_with_mnemonic()gtk_label_set_text_with_mnemonic()

助记符会自动激活标签内部的任何可激活小部件,例如一个GtkButton;如果标签不在助记符的目标小部件内,您必须使用gtk_label_set_mnemonic_widget()告诉标签关于目标的信息。

这里有一个简单的例子,其中标签在一个按钮内

// Pressing Alt+H will activate this button
GtkWidget *button = gtk_button_new ();
GtkWidget *label = gtk_label_new_with_mnemonic ("_Hello");
gtk_button_set_child (GTK_BUTTON (button), label);

有一个方便的函数可以创建已经包含助记符标签的按钮

// Pressing Alt+H will activate this button
GtkWidget *button = gtk_button_new_with_mnemonic ("_Hello");

要为标签旁边的底层小部件创建助记符,例如一个GtkEntry,您必须使用gtk_label_set_mnemonic_widget()将标签指向该表单

// Pressing Alt+H will focus the entry
GtkWidget *entry = gtk_entry_new ();
GtkWidget *label = gtk_label_new_with_mnemonic ("_Hello");
gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);

标记语言(样式化文本)

为了轻松在标签中格式化文本(更改颜色、字体等),标签文本可以用简单的标记语言提供

这就是创建小字的标签的方法

GtkWidget *label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), "<small>Small text</small>");

(有关可用标记和完整文档,请参阅Pango手册][pango_parse_markup()

gtk_label_set_markup()传递的标记必须是有效的XML;例如,均为字面字符<>&必须转义为&lt;&gt;&amp;。如果您将用户、文件或网络获得的文本传递到gtk_label_set_markup(),您希望使用g_markup_escape_text()g_markup_printf_escaped()进行转义。

标记字符串只是设置标签的便利方式PangoAttrList;在某些情况下,可能使用gtk_label_set_attributes()更简单。但是要小心;PangoAttrList往往会引起国际化问题,除非您将属性应用于整个字符串(即,除非您将每个属性的range设置为[0, G_MAXINT])。原因是指定PangoAttributestart_indexend_index需要了解确切显示的字符串,因此翻译会导致问题。

可选择的标签

可以使用gtk_label_set_selectable()使标签可选择。可选择标签允许用户将标签内容复制到剪贴板。只有包含可复制信息(例如错误消息)的标签才应该设置为可选择。

文本布局

标签可以包含任意数量的段落,但如果包含的段落数过多,将会有性能问题。段落由新行或其他Pango理解的段落分隔符分隔。

如果调用gtk_label_set_wrap(),标签可以自动换行。

gtk_label_set_justify() 设置标签中行之间的对齐方式。如果您想要设置标签在整个可用空间中的对齐方式,请查看 GtkWidget:halignGtkWidget:valign 属性。

GtkLabel:width-charsGtkLabel:max-width-chars 属性可用于控制省略或换行标签的大小分配。对于省略标签,如果指定了任一属性(且小于实际文本大小),则用作最小宽度,实际文本大小用作标签的自然宽度。对于换行标签,如果指定了 width-chars,则用作最小宽度,max-width-chars 用作自然宽度。即使指定了 max-width-chars,换行标签也将重新换行以使用所有的可用宽 度。

GTK 除了常规的 Pango 标记外,还支持可点击的超链接的标记。链接的标记借用了 HTML,使用具有“href”“title”和“class”属性的 <a> 标签。 GTK 以类似于在网页浏览器中显示的方式渲染链接,带有带颜色的下划线文本。“title”属性作为链接的提示显示。 “class”属性用作链接的 CSS 节点的样式类。

内联链接的示例看起来像这样

const char *text =
"Go to the "
"<a href=\"https://gtk.org.cn\" title=\"&lt;i&gt;Our&lt;/i&gt; website\">"
"GTK website</a> for more...";
GtkWidget *label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), text);

通过使用 GtkLabel::activate-link 信号和 gtk_label_get_current_uri() 函数,可以实现针对链接和其工具提示的自定义处理。

层次结构

hierarchy this GtkLabel implements_0 GtkAccessible this--implements_0 implements_1 GtkAccessibleText this--implements_1 implements_2 GtkBuildable this--implements_2 implements_3 GtkConstraintTarget this--implements_3 ancestor_0 GtkWidget ancestor_0--this ancestor_1 GInitiallyUnowned ancestor_1--ancestor_0 ancestor_2 GObject ancestor_2--ancestor_1

构造函数

gtk_label_new

创建一个新的标签并使用给定的文本。

gtk_label_new_with_mnemonic

创建一个新的标签并使用给定的文本,附带一个快捷键。

实例方法

gtk_label_get_attributes

获取标签的属性列表。

gtk_label_get_current_uri

返回标签中活动链接的 URI

gtk_label_get_ellipsize

返回标签的省略化模式。

gtk_label_get_extra_menu

获取标签的额外菜单模型。

gtk_label_get_justify

返回标签的对齐方式。

gtk_label_get_label

从标签中获取文 本。

gtk_label_get_layout

获取用于显示标签的 Pango 布局。

gtk_label_get_layout_offsets

获取标签绘制其 Pango 布局的坐标。

gtk_label_get_lines

获取应限制省略或换行标签行数的行数。

gtk_label_get_max_width_chars

检索标签的最大字符宽“度。

gtk_label_get_mnemonic_keyval

返回快捷键。

gtk_label_get_mnemonic_widget

检索此标签的快捷键目标。

gtk_label_get_natural_wrap_mode

返回标签使用的自然行换行模式。

自:4.6

gtk_label_get_selectable

返回标签是否可“选。

gtk_label_get_selection_bounds

获取标签中选定的字符范围。

gtk_label_get_single_line_mode

返回标签是否在单行“模式中。

gtk_label_get_tabs

获取标签的制表符。

自:4.8

gtk_label_get_text

获取标签的文本。

gtk_label_get_use_markup

返回标签文本是否解释为Pango标记。

gtk_label_get_use_underline

返回标签中的下划线是否指示快捷键。

gtk_label_get_width_chars

检索标签的期望宽度(以字符为单位)。

gtk_label_get_wrap

返回标签中的行是否自动换行。

gtk_label_get_wrap_mode

返回标签使用的行包装模式。

gtk_label_get_xalign

获取标签的xalign。

gtk_label_get_yalign

获取标签的yalign。

gtk_label_select_region

如果标签可选择,则选择标签中的字符范围。

gtk_label_set_attributes

将属性应用到标签文本。

gtk_label_set_ellipsize

设置用于省略文本的模式。

gtk_label_set_extra_menu

设置要添加到标签上下文菜单的菜单模型。

gtk_label_set_justify

设置标签中行之间的对齐。

gtk_label_set_label

设置标签的文本。

gtk_label_set_lines

设置椭圆化、换行的标签的行数限制。

gtk_label_set_markup

从标记设置标签的文本和属性。

gtk_label_set_markup_with_mnemonic

从标记设置标签的文本、属性和快捷键。

gtk_label_set_max_width_chars

设置标签的最大宽度(以字符为单位)。

gtk_label_set_mnemonic_widget

将与标签的快捷键目标关联标签。

gtk_label_set_natural_wrap_mode

选择自然大小请求的行包装。

自:4.6

gtk_label_set_selectable

使标签中的文本可选中。

gtk_label_set_single_line_mode

设置标签是否处于单行模式。

gtk_label_set_tabs

设置标签的制表位。

自:4.8

gtk_label_set_text

为标签设置文本。

gtk_label_set_text_with_mnemonic

设置带有快捷键的标签文本。

gtk_label_set_use_markup

设置标签的文本是否包含标记。

gtk_label_set_use_underline

设置文本中的下划线是否指示快捷键。

gtk_label_set_width_chars

设置标签的期望宽度(以字符为单位)。

gtk_label_set_wrap

切换标签内的行包装。

gtk_label_set_wrap_mode

控制行包装的执行方式。

gtk_label_set_xalign

设置标签的xalign。

gtk_label_set_yalign

设置标签的yalign。

GuidIda继承的方法(162)

请参阅GuidIda,获取方法的完整列表。

GObject继承的方法(43)

请参阅GObject,获取方法的完整列表。

GtkAccessible继承的方法(19)
gtk_accessible_announce

请求用户屏幕阅读器宣布给定消息。

since: 4.14

gtk_accessible_get_accessible_parent

检索可访问对象的可访问父对象。

since: 4.10

gtk_accessible_get_accessible_role

检索可访问对象的可访问角色。

gtk_accessible_get_at_context

检索给定可访问对象的实现。

since: 4.10

gtk_accessible_get_bounds

查询此可访问对象的坐标和大小。

since: 4.10

gtk_accessible_get_first_accessible_child

获取可访问对象的第一个可访问子对象。

since: 4.10

gtk_accessible_get_next_accessible_sibling

获取可访问对象的可访问下一个兄弟。

since: 4.10

gtk_accessible_get_platform_state

查询平台状态,例如焦点。

since: 4.10

gtk_accessible_reset_property

将可访问属性重置为其默认值。

gtk_accessible_reset_relation

将可访问关系重置为其默认值。

gtk_accessible_reset_state

将可访问状态重置为其默认值。

gtk_accessible_set_accessible_parent

设置可访问对象的父级和兄弟。

since: 4.10

gtk_accessible_update_nextAccessible_sibling

更新下一个可访问兄弟。

since: 4.10

gtk_accessible_update_property

更新一组可访问属性。

gtk_accessible_update_property_value

更新属性数组。

gtk_accessible_update_relation

更新关系列表。

gtk_accessible_update_relation_value

更新关系数组。

gtk_accessible_update_state

更新状态列表。

gtk_accessible_update_state_value

更新状态数组。

GtkAccessibleText (3) 继承的方法
gtk_accessible_text_update_caret_position

更新光标位置。

since: 4.14

gtk_accessible_text_update_contents

通知辅助技术内容的更改。

since: 4.14

gtk_accessible_text_update_selection_bound

更新选择边界。

since: 4.14

GtkBuildable (1) 继承的方法
gtk_buildable_get_buildable_id

获取 ID 之后,获取 buildable 对象。

属性

Gtk.Label:attributes

应用于标签文本的自定义样式列表。

Gtk.Label:ellipsize

如果标签没有足够的空间显示整个字符串,则 preferred 的位置 ellipsize 字符串。

Gtk.Label:extra-menu

内容将在上下文菜单末尾追加的菜单模型。

Gtk.Label:justify

相对于彼此的文本中的基线线的对齐方式。

Gtk.Label:label

标签的内容。

Gtk.Label:lines

限制省略并回绕的标签应具有的行数。

Gtk.Label:max-width-chars

标签期望的最大宽度,以字符为单位。

Gtk.Label:mnemonic-keyval

标签的快捷键。

Gtk.Label:mnemonic-widget

当按下标签的快捷键时,将要激活的控件。

Gtk.Label:natural-wrap-mode

选择在自然大小请求中对行回绕。

自:4.6

Gtk.Label:selectable

是否可以使用鼠标选择标签文本。

Gtk.Label:single-line-mode

标签是否处于单行模式。

Gtk.Label:tabs

此标签的自定义制表符。

自:4.8

Gtk.Label:use-markup

如果标签文本包含 Pango 标记,则为 True。

Gtk.Label:use-underline

如果标签文本中的 `_` 前有快捷键字符,则为 True。

Gtk.Label:width-chars

标签期望的宽度,以字符为单位。

Gtk.Label:wrap

如果标签文本太宽,则将其包装。

Gtk.Label:wrap-mode

控制如何进行行回绕。

Gtk.Label:xalign

标签文本在其大小分配内的水平对齐方式。

Gtk.Label:yalign

标签文本在其大小分配内的垂直对齐方式。

GtkWidget 继承的属性(34个)
Gtk.Widget:can-focus

控件或其任何后代是否可以接收输入焦点。

Gtk.Widget:can-target

控件是否可以接收指针事件。

Gtk.Widget:css-classes

应用于此控件的CSS类列表。

Gtk.Widget:css-name

此控件在CSS树中的名称。

Gtk.Widget:cursor

widget所使用的光标。

Gtk.Widget:focus-on-click

鼠标点击控件时,控件是否应该抢夺焦点。

Gtk.Widget:focusable

此控件自身是否将接受输入焦点。

Gtk.Widget:halign

控件得到额外空间时,如何分配水平空间。

Gtk.Widget:has-default

控件是否是默认控件。

Gtk.Widget:has-focus

控件是否具有输入焦点。

Gtk.Widget:has-tooltip

启用或禁用在widget上触发GtkWidget::query-tooltip信号。

Gtk.Widget:height-request

覆盖控件的高度请求。

Gtk.Widget:hexpand

是否水平展开。

Gtk.Widget:hexpand-set

是否使用hexpand属性。

Gtk.Widget:layout-manager

用于计算控件首选大小并为其子元素分配空间的GtkLayoutManager实例。

Gtk.Widget:margin-bottom

控件底部的边距。

Gtk.Widget:margin-end

控件末端的边距,水平方向。

Gtk.Widget:margin-start

控件起始的边距,水平方向。

Gtk.Widget:margin-top

控件顶部的边距。

Gtk.Widget:name

控件的名称。

Gtk.Widget:opacity

控件请求的不透明度。

Gtk.Widget:overflow

如何处理控件内容区域外的内容。

Gtk.Widget:parent

此控件的父控件。

Gtk.Widget:receives-default

当控件获得焦点时,控件是否会接收默认操作。

Gtk_Widget:root

包含此控件的控件树的GtkRoot控件。

Gtk_Widget:scale-factor

控件的比例因子。

Gtk_Widget:sensitive

控件是否响应用户输入。

Gtk_Widget:tooltip-markup

将工具提示文本设置为给定的字符串,该字符串用Pango标记。

Gtk_Widget:tooltip-text

将工具提示文本设置为给定的字符串。

Gtk_Widget:valign

控件得到额外空间时,如何分配垂直空间。

Gtk_Widget:vexpand

是否垂直展开。

Gtk_Widget:vexpand-set

是否使用vexpand属性。

Gtk_Widget:visible

控件是否可见。

Gtk_Widget:width-request

覆盖控件的宽度请求。

GtkAccessible 继承的属性(1个)
GtkAccessible:accessible-role

给定GtkAccessible实现的辅助功能角色。

信号

Gtk.Label::activate-current-link

当用户在标签中激活链接时,会发出。

Gtk.Label::activate-link

发出以激活URI。

Gtk.Label::copy-clipboard

发出以将选择内容复制到剪贴板。

Gtk.Label::move-cursor

当用户开始移动光标时,会发出。

GtkWidget 继承的信号(13个)
GtkWidget::destroy

所有持有该小部件引用的对象都应该释放它们持有的引用。

GtkWidget::direction-changed

当小部件的文本方向发生变化时发出。

GtkWidget::hide

widget 被隐藏时发出。

GtkWidget::keynav-failed

如果键盘导航失败则发出。

GtkWidget::map

widget 即将进行映射时发出。

GtkWidget::mnemonic-activate

当小部件通过助记符被激活时发出。

GtkWidget::move-focus

当焦点移动时发出。

GtkWidget::query-tooltip

当小部件的提示信息即将显示时发出。

GtkWidget::realize

widget 与一个 GdkSurface 关联时发出。

GtkWidget::show

widget 被显示时发出。

GtkWidget::state-flags-changed

当小部件的状态变化时发出。

GtkWidget::unmap

widget 即将进行取消映射时发出。

GtkWidget::unrealize

当与 widget 关联的 GdkSurface 被销毁时发出。

GObject 继承的信号(1个)
GObject::notify

当对象的一个属性值通过 g_object_set_property(), g_object_set() 等设置时,会发出 notify 信号。