类
Gtk应用程序
描述 [src]
class Gtk.Application : Gio.Application
implements Gio.ActionGroup, Gio.ActionMap {
/* No available fields */
}
用于编写应用程序的高级API。
GtkApplication
支持以便捷的方式编写 GTK 应用程序的许多方面,而无需强制执行一刀切的模型。
目前,它处理 GTK 初始化、应用程序唯一性、会话管理,通过导出操作和菜单提供一些基本可脚本性和桌面外壳集成,并管理一个顶级窗口列表,其生命周期会自动与您应用程序的生命周期绑定。
虽然 GtkApplication
与纯 GtkWindow
配合良好,但建议将其与 GtkApplicationWindow
一起使用。
自动资源
GtkApplication
将自动从位于应用程序资源库路径(参见 g_application_set_resource_base_path()
)相对于“gtk/menus.ui”的 GtkBuilder
资源加载菜单。ID
为“menubar”的菜单被视为应用程序的菜单栏。可以通过 gtk_application_get_menu_by_id()
命名和访问其他菜单(最有趣的是子菜单),它允许动态填充菜单结构的一部分。
请注意,自动资源加载使用在构造时设置的资源库路径,如果稍后更改资源库路径,它将不起作用。
还可以使用 gtk_application_set_menubar()
手动提供菜单栏。
GtkApplication
还会通过将“icons”附加到资源库路径为默认图标主题自动设置图标搜索路径。这使您的应用程序可以轻松地将图标存储为资源。有关更多信息,请参见 gtk_icon_theme_add_resource_path()
。
如果在 gtk/help-overlay.ui
有一个资源,其中定义了带有 ID help_overlay
的 GtkShortcutsWindow
,则 GtkApplication
将该快捷方式窗口的一个实例与每个 GtkApplicationWindow
相关联,并设置键盘快捷键 Control+? 来打开它。若要创建一个显示快捷方式窗口的菜单项,可将该项与操作 win.show-help-overlay
相关联。
GtkApplication
还将自动将应用程序 ID 设置为默认窗口图标。使用 gtk_window_set_default_icon_name()
或 GtkWindow:icon-name
可覆盖该行为。
一个简单的应用程序
GTK 源代码存储库中提供了一个 简单示例
GtkApplication
可选择在用户会话的会话管理器中注册(如果您设置了 GtkApplication:register-session
属性),并提供与会话生命周期相关的多种功能。
应用程序可以使用 gtk_application_inhibit()
函数阻止以各种方式结束会话。这种抑制的典型用例是长时间、不可中断的操作,例如刻录 CD 或执行磁盘备份。会话管理器可能不会遵循抑制器,但可以指望它通知用户在存在抑制器的情况下结束会话的负面后果。
另请参阅
实例方法
从 GApplication (36) 继承的方法
请参阅 GApplication 以获取完整的方法列表。
从 GActionGroup (14) 继承的方法
g_action_group_action_added
在“action_group”中发出“GActionGroup::action-added”信号。
g_action_group_action_enabled_changed
在“action_group”中发出“GActionGroup::action-enabled-changed”信号。
g_action_group_action_removed
在“action_group”中发出“GActionGroup::action-removed”信号。
g_action_group_action_state_changed
在“action_group”中发出“GActionGroup::action-state-changed”信号。
g_action_group_activate_action
激活“action_group”中指定的动作。
g_action_group_change_action_state
请求将“action_group”中指定动作的状态更改为“value”。
g_action_group_get_action_enabled
检查“action_group”中指定的动作是否当前已启用。
g_action_group_get_action_parameter_type
查询在激活“action_group”中指定动作时必须提供的参数的类型。
g_action_group_get_action_state
查询“action_group”中指定动作的当前状态。
g_action_group_get_action_state_hint
请求有关“action_group”中指定动作的状态的有效值范围的提示。
g_action_group_get_action_state_type
查询“action_group”中指定动作的状态的类型。
g_action_group_has_action
检查指定的动作是否存在于“action_group”之中。
g_action_group_list_actions
列出“action_group”中包含的动作。
g_action_group_query_action
查询“action_group”中指定动作的所有方面。
从 GActionMap (5)继承的方法
g_action_map_add_action
将动作添加到“action_map”。
g_action_map_add_action_entries
一个便捷函数,用于创建多个“GSimpleAction”实例并将它们添加到“GActionMap”。
g_action_map_lookup_action
在“action_map”中查找名称为“action_name”的动作。
g_action_map_remove_action
从动作映射中删除指定的动作。
g_action_map_remove_action_entries
从“GActionMap”中移除动作。这被认为是 g_action_map_add_action_entries() 的反向操作。
属性
从 GApplication (9)继承的属性
Gio.Application:action-group
应用程序导出的动作组。
Gio.Application:application-id
应用程序的唯一标识符。
Gio.Application:flags
指定应用程序行为的标志。
Gio.Application:inactivity-timeout
空闲后保持活动的时长(以毫秒为单位)。
Gio.Application:is-busy
如果应用程序当前通过 g_application_mark_busy() 或 g_application_bind_busy_property() 标记为繁忙,则为真。
Gio.Application:is-registered
是否已调用 g_application_register()。
Gio.Application:is-remote
此应用程序实例是否是远程的。
Gio.Application:resource-base-path
应用程序的基本资源路径。
Gio.Application:version
应用程序的可读版本号。
信号
从 GApplication (7) 继承的信号
GApplication::activate
激活发生时,会在主要实例上发出 ::activate 信号。请参阅 g_application_activate()。
GApplication::command-line
没有在本地处理命令行时,会在主要实例上发出 ::command-line 信号。请参阅 g_application_run() 和 GApplicationCommandLine 文档,了解更多信息。
GApplication::handle-local-options
解析命令行选项后,会在本地实例上发出 ::handle-local-options 信号。
GApplication::name-lost
新的实例接管时,仅在已注册的主要实例上发出 ::name-lost 信号。仅当应用程序使用 G_APPLICATION_ALLOW_REPLACEMENT 标志时,才会发生这种情况。
GApplication::open
有要打开的文件时,会在主要实例上发出 ::open 信号。请参阅 g_application_open(),了解更多信息。
GApplication::shutdown
在主循环终止后,仅在已注册的主要实例上发出 ::shutdown 信号。
GApplication::startup
注册后,会在主要实例上立即发出 ::startup 信号。请参阅 g_application_register()。
从 GObject (1) 继承的信号
GObject::notify
通过 g_object_set_property()、g_object_set() 等方法设置对象某个属性值时,会在该对象上发出 notify 信号。
从 GActionGroup (4) 继承的信号
GActionGroup::action-added
表示刚刚向该组添加了一个新操作。此信号在操作添加且现在可见后发出。
GActionGroup::action-enabled-changed
表示已命名的操作的已启用状态已发生更改。
GActionGroup::action-removed
表示该操作即将从该组中移除。此信号在移除操作之前发出,因此操作仍然可见,并且可以从信号处理程序中进行查询。
GActionGroup::action-state-changed
表示已命名的操作的状态已更改。
类结构
struct GtkApplicationClass {
GApplicationClass parent_class;
void (* window_added) (
GtkApplication* application,
GtkWindow* window
);
void (* window_removed) (
GtkApplication* application,
GtkWindow* window
);
}
无可用描述。
类成员
parent_class: GApplicationClass
父类。
window_added: void (* window_added) ( GtkApplication* application, GtkWindow* window )
通过 gtk_application_add_window() 将 GtkWindow 添加到应用程序时发出的信号。
window_removed: void (* window_removed) ( GtkApplication* application, GtkWindow* window )
由于被销毁或通过 gtk_application_remove_window() 显示删除 GtkWindow 而从应用程序中移除 GtkWindow 时发出的信号。
虚拟方法
Gtk.ApplicationClass.window_removed
由于被销毁或通过 gtk_application_remove_window() 显示删除 GtkWindow 而从应用程序中移除 GtkWindow 时发出的信号。