类
GtkPopover
描述 [src]
class Gtk.Popover : Gtk.Widget
implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Native, Gtk.ShortcutManager {
/* No available fields */
}
GtkPopover
是类似气泡状的上下文弹出菜单。
它主要用来提供依赖于上下文的有关信息或选项。弹出菜单依附到父窗口小部件。默认情况下,它们指向整个窗口小部件区域,但此行为可以用 gtk_popover_set_pointing_to()
来更改。
弹出菜单相对于依附其上的窗口小部件的位置也可以用 gtk_popover_set_position()
来更改
默认情况下,GtkPopover
会执行抢占,以确保在显示时输入事件被重定向到它,并且弹出菜单在预期的情况下也会被关闭(点击弹出菜单外部或按 Escape 键)。如果在弹出菜单上不需要这种模态行为,则可以在其上调用 gtk_popover_set_autohide()
以调整其行为。
GtkPopover 替代菜单
GtkPopover
经常用来替代菜单。执行此操作的最佳方法是使用 GtkPopoverMenu
子类,该子类支持使用 gtk_popover_menu_new_from_model()
从 GMenuModel
填充
<section>
<attribute name="display-hint">horizontal-buttons</attribute>
<item>
<attribute name="label">Cut</attribute>
<attribute name="action">app.cut</attribute>
<attribute name="verb-icon">edit-cut-symbolic</attribute>
</item>
<item>
<attribute name="label">Copy</attribute>
<attribute name="action">app.copy</attribute>
<attribute name="verb-icon">edit-copy-symbolic</attribute>
</item>
<item>
<attribute name="label">Paste</attribute>
<attribute name="action">app.paste</attribute>
<attribute name="verb-icon">edit-paste-symbolic</attribute>
</item>
</section>
快捷方式和手势
GtkPopover
支持以下键盘快捷方式
- Escape 关闭弹出菜单。
- Alt 使助记符可见。
以下信号具有默认键盘绑定
CSS 节点
popover.background[.menu]
├── arrow
╰── contents
╰── <child>
GtkPopover
有一个主节点名为 popover
,一个名为 arrow
的箭头,以及一个用于内容的另一个节点,名为 contents
。popover
节点始终获得 .background
样式类。如果该弹出窗口类似菜单,它还将获得 .menu
样式类,例如是 GtkPopoverMenu
。
GtkPopover
的特定用法,例如 GtkEntry
或 GtkTextView
中的触控选择弹出窗口或放大镜,获得诸如 .touch-selection
或 .magnifier
之类的样式类以区别于简单的弹出窗口。
在直接设置弹出窗口样式时,通常不应该对 popover
节点设置任何背景。弹出窗口的可见部分可以有阴影。要在 CSS 中指定它,请设置 contents
节点的盒阴影。
注意,为了实现合适的箭头可视效果,GtkPopover
对 arrow
节点使用了自定义绘制。这使得箭头可以动态地改变其形状,但这也限制了使用 CSS 设置其样式的可能性。特别是,arrow
会在 content
节点的边框和阴影上绘制,因此它们看起来像一个形状,这意味着 content
节点和 arrow
节点的边框宽度应相同。箭头也不支持除实线以外的任何边框形状,没有边框半径,只有一个边框宽度(使用了 border-bottom-width)和无盒阴影。