类
GtkLabel
描述 [源码]
final class Gtk.Label : Gtk.Widget
implements Gtk.Accessible, Gtk.AccessibleText, Gtk.Buildable, Gtk.ConstraintTarget {
/* No available fields */
}
显示少量文本。
大多数标签用于标记另一个小部件(例如 GtkEntry
)。
快捷键和手势
GtkLabel
当光标可见时支持以下键盘快捷键:
- Shift+F10 或 Menu 打开上下文菜单。
- Ctrl+A 或 Ctrl+/ 选择全部。
- Ctrl+Shift+A 或 Ctrl+\ 取消选择全部。
此外,以下信号具有默认的键绑定:
行为
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;例如,均为字面字符<
、>
和&
必须转义为<
、>
和&
。如果您将用户、文件或网络获得的文本传递到gtk_label_set_markup()
,您希望使用g_markup_escape_text()
或g_markup_printf_escaped()
进行转义。
标记字符串只是设置标签的便利方式PangoAttrList
;在某些情况下,可能使用gtk_label_set_attributes()
更简单。但是要小心;PangoAttrList
往往会引起国际化问题,除非您将属性应用于整个字符串(即,除非您将每个属性的range设置为[0, G_MAXINT
])。原因是指定PangoAttribute
的start_index
和end_index
需要了解确切显示的字符串,因此翻译会导致问题。
可选择的标签
可以使用gtk_label_set_selectable()
使标签可选择。可选择标签允许用户将标签内容复制到剪贴板。只有包含可复制信息(例如错误消息)的标签才应该设置为可选择。
文本布局
标签可以包含任意数量的段落,但如果包含的段落数过多,将会有性能问题。段落由新行或其他Pango理解的段落分隔符分隔。
如果调用gtk_label_set_wrap()
,标签可以自动换行。
gtk_label_set_justify()
设置标签中行之间的对齐方式。如果您想要设置标签在整个可用空间中的对齐方式,请查看 GtkWidget:halign
和 GtkWidget:valign
属性。
GtkLabel:width-chars
和 GtkLabel: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=\"<i>Our</i> 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()
函数,可以实现针对链接和其工具提示的自定义处理。
实例方法
从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) 继承的方法
属性
从 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个)
信号
从 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 信号。