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);