UIManager
A continuación debe crear un UIManager y añadirle el ActionGroup con insert_action_group(). En este punto, también es una buena idea decirle a la ventana madre que responda a los atajos del teclado especificados, usando add_accel_group().
Por ejemplo,
Glib::RefPtr<Gtk::UIManager> m_refUIManager = Gtk::UIManager::create(); m_refUIManager->insert_action_group(m_refActionGroup); add_accel_group(m_refUIManager->get_accel_group());
Luego, puede definir la distribución visible real de los menús y las barras de herramientas, y añadírsela al UIManager. Esta «cadena de IU» usa un formato XML, en el que debe mencionar los nombre de las acciones que ya ha creado. Por ejemplo:
Glib::ustring ui_info = "<ui>" " <menubar name='MenuBar'>" " <menu action='MenuFile'>" " <menuitem action='New'/>" " <menuitem action='Open'/>" " <separator/>" " <menuitem action='Quit'/>" " </menu>" " <menu action='MenuEdit'>" " <menuitem action='Cut'/>" " <menuitem action='Copy'/>" " <menuitem action='Paste'/>" " </menu>" " </menubar>" " <toolbar name='ToolBar'>" " <toolitem action='Open'/>" " <toolitem action='Quit'/>" " </toolbar>" "</ui>"; m_refUIManager->add_ui_from_string(ui_info);
Recuerde que estos nombres son sólo identificadores que se usaron cuando se crearon las acciones. No son el texto que el usuario verá en los menús y barras de herramientas. Se han proporcionado esos nombres legibles por el humano cuando se crearon las acciones.
Para instanciar una Gtk::MenuBar o una Gtk::Toolbar, a la que en realidad puede mostrar, debe usar el método UIManager::get_widget(), y luego añadirle el widget a un contenedor. Por ejemplo:
Gtk::Widget* pMenubar = m_refUIManager->get_widget("/MenuBar"); pBox->add(*pMenuBar, Gtk::PACK_SHRINK);