Connecting actions to widgets

Any widget that implements the GtkActionable interface can be connected to an action just by setting the ::action-name property. If the action has a parameter, you will also need to set the ::action-target property. Widgets that implement GtkActionable include GtkSwitch, GtkButton, and their respective subclasses.

Another way of obtaining widgets that are connected to actions is to create a menu using a GMenu menu model. GMenu provides an abstract way to describe typical menus: nested groups of items where each item can have a label, and icon, and an action.

Typical uses of GMenu inside GTK are to set up an application menu or menubar with gtk_application_set_app_menu() or gtk_application_set_menubar(). Another, maybe more common use is to create a popover for a menubutton, using gtk_menu_button_set_menu_model().

Unlike traditional menus, those created from menu models don’t have keyboard accelerators associated with menu items. Instead, GtkApplication offers the gtk_application_set_accels_for_action() API to associate keyboard shortcuts with actions.