|
|
Par
Mise à jour : 28/01/2012
Difficulté :
Intermédiaire
Durée d'étude :
2
heures
522 visites depuis 7 jours,
dont 20 sur ce chapitre
classé 219/786
|
).


1 | Gtk::MenuBar barreMenu; |
).1 2 | Gtk::MenuItem menuItemFichier("Fichier"); barreMenu.append(menuItemFichier); |
1 | Gtk::MenuItem menuItemFichier("_Fichier", true); |
1 2 | Gtk::Menu menuFichier; menuItemFichier.set_submenu(menuFichier); |
… vide.1 2 | Gtk::MenuItem menuItemFichiersRecents("_Récents", true); menuFichier.append(menuItemFichiersRecents); |
) :1 2 | Gtk::ImageMenuItem menuNouveau(Gtk::Stock::NEW); menuFichier.append(menuNouveau); |
1 2 | Gtk::SeparatorMenuItem separateur; menuFichier.append(separateur); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | #include <gtkmm/box.h> #include <gtkmm/imagemenuitem.h> #include <gtkmm/main.h> #include <gtkmm/menu.h> #include <gtkmm/menubar.h> #include <gtkmm/menuitem.h> #include <gtkmm/separatormenuitem.h> #include <gtkmm/stock.h> #include <gtkmm/window.h> int main(int argc, char* argv[]) { Gtk::Main app(argc, argv); Gtk::Window fenetre; fenetre.resize(200, 75); Gtk::VBox boiteV; fenetre.add(boiteV); //Création d’une barre de menu. Gtk::MenuBar barreMenu; boiteV.pack_start(barreMenu, Gtk::PACK_SHRINK); //Création de l’item menu fichier et ajout à la barre de menu. Gtk::MenuItem menuItemFichier("_Fichier", true); barreMenu.append(menuItemFichier); //Création du menu Fichier et ajout à l’item de menu Fichier. Gtk::Menu menuFichier; menuItemFichier.set_submenu(menuFichier); //Création d’un item de menu à partir d’un Stock Item et ajout au menu. Gtk::ImageMenuItem menuNouveau(Gtk::Stock::NEW); menuFichier.append(menuNouveau); //Sous-menu : Fichier->Récents Gtk::MenuItem menuItemFichiersRecents("_Récents", true); menuFichier.append(menuItemFichiersRecents); //Utilisation de set_submenu() afin de créer un sous-menu. Gtk::Menu menuRecents; menuItemFichiersRecents.set_submenu(menuRecents); Gtk::MenuItem fichierRecent1("Fichier récent 1"); menuRecents.append(fichierRecent1); Gtk::MenuItem fichierRecent2("Fichier récent 2"); menuRecents.append(fichierRecent2); //Fichier->Ouvrir Gtk::ImageMenuItem menuOuvrir(Gtk::Stock::OPEN); menuFichier.append(menuOuvrir); //Fichier->Enregistrer Gtk::ImageMenuItem menuEnregistrer(Gtk::Stock::SAVE); menuFichier.append(menuEnregistrer); //Ajout d’un séparateur au menu Fichier. Gtk::SeparatorMenuItem separateur; menuFichier.append(separateur); //Fichier->Fermer Gtk::ImageMenuItem menuFermer(Gtk::Stock::CLOSE); menuFichier.append(menuFermer); //Fichier->Quitter Gtk::ImageMenuItem menuQuitter(Gtk::Stock::QUIT); //Connexion du clic sur le menu Quitter à la fonction Gtk::Main::quit(). menuQuitter.signal_activate().connect(sigc::ptr_fun(&Gtk::Main::quit)); menuFichier.append(menuQuitter); //Menu édition Gtk::MenuItem menuItemEdition("É_dition", true); barreMenu.append(menuItemEdition); Gtk::Menu menuEdition; menuItemEdition.set_submenu(menuEdition); fenetre.show_all(); Gtk::Main::run(fenetre); return 0; } |
1 | Gtk::Toolbar barreOutils; |
1 | Gtk::ToolButton boutonCompiler("Compiler"); |
1 | barreOutils.append(boutonCompiler); |
1 | Gtk::ToolButton boutonNouveau(Gtk::Stock::NEW); |
1 | boutonNouveau.set_tooltip_text("Crée un nouveau fichier"); |
1 | boutonNouveau.set_tooltip_markup("<b>Nouveau</b> fichier"); |
1 2 | Gtk::SeparatorToolItem separateur; barreOutils.append(separateur); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <gtkmm/box.h> #include <gtkmm/main.h> #include <gtkmm/separatortoolitem.h> #include <gtkmm/stock.h> #include <gtkmm/toolbar.h> #include <gtkmm/toolbutton.h> #include <gtkmm/window.h> int main(int argc, char* argv[]) { Gtk::Main app(argc, argv); Gtk::Window window; window.resize(200, 75); Gtk::VBox vBox; window.add(vBox); //Création d’une barre d’outils. Gtk::Toolbar barreOutils; vBox.pack_start(barreOutils, Gtk::PACK_SHRINK); //Création d’un bouton à partir d’un Stock Item et ajout à la barre d’outils. Gtk::ToolButton boutonNouveau(Gtk::Stock::NEW); boutonNouveau.set_tooltip_text("Crée un nouveau fichier"); barreOutils.append(boutonNouveau); Gtk::ToolButton boutonCompiler("Compiler"); barreOutils.append(boutonCompiler); //Création d’un séparateur et ajout à la barre d’outils. Gtk::SeparatorToolItem separateur; barreOutils.append(separateur); Gtk::ToolButton boutonQuitter(Gtk::Stock::QUIT); boutonQuitter.set_tooltip_markup("<b><span color='red'>Ferme l’application</span></b>"); //Connexion du signal clicked() du bouton à la fonction Gtk::Main::quit(). boutonQuitter.signal_clicked().connect(sigc::ptr_fun(&Gtk::Main::quit)); barreOutils.append(boutonQuitter); window.show_all(); Gtk::Main::run(window); return 0; } |
1 | Glib::RefPtr<Gtk::Action> actionNouveau = Gtk::Action::create("nouveau", Gtk::Stock::NEW); |
1 | Glib::RefPtr<Gtk::Action> actionCompiler = Gtk::Action::create("ouvrir", "Compiler"); |
1 | Glib::RefPtr<Gtk::Action> actionQuitter = Gtk::Action::create("quitter", Gtk::Stock::QUIT, "Quitter l’application", "Ferme l’application"); |
1 | actionQuitter->signal_activate().connect(sigc::ptr_fun(&Gtk::Main::quit)); |
1 2 | Gtk::MenuItem* menuItem = actionNouveau->create_menu_item(); Gtk::ToolItem* toolItem = actionNouveau->create_tool_item(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include <gtkmm/action.h> #include <gtkmm/box.h> #include <gtkmm/main.h> #include <gtkmm/menu.h> #include <gtkmm/menubar.h> #include <gtkmm/menuitem.h> #include <gtkmm/separatormenuitem.h> #include <gtkmm/separatortoolitem.h> #include <gtkmm/stock.h> #include <gtkmm/toolbar.h> #include <gtkmm/toolbutton.h> #include <gtkmm/window.h> int main(int argc, char* argv[]) { Gtk::Main app(argc, argv); Gtk::Window fenetre; fenetre.resize(200, 75); Gtk::VBox boiteV; fenetre.add(boiteV); /* * Actions */ //Création d’une action à partir d’un Stock Item. Glib::RefPtr<Gtk::Action> actionNouveau = Gtk::Action::create("nouveau", Gtk::Stock::NEW); Glib::RefPtr<Gtk::Action> actionOuvrir = Gtk::Action::create("ouvrir", Gtk::Stock::OPEN); //Création d’une action à partir d’un texte. Glib::RefPtr<Gtk::Action> actionCompiler = Gtk::Action::create("ouvrir", "Compiler"); //Création d’une action avec une info-bulle. Glib::RefPtr<Gtk::Action> actionQuitter = Gtk::Action::create("quitter", Gtk::Stock::QUIT, "Quitter l’application", "Ferme l’application"); //Connexion d’une action à une fonction de rappel. actionQuitter->signal_activate().connect(sigc::ptr_fun(&Gtk::Main::quit)); /* * Menu */ Gtk::MenuBar barreMenu; boiteV.pack_start(barreMenu, Gtk::PACK_SHRINK); Gtk::MenuItem menuItemFichier("Fichier"); barreMenu.append(menuItemFichier); Gtk::Menu menuFichier; menuItemFichier.set_submenu(menuFichier); //Ajout d’actions au menu fichier. menuFichier.append(*(actionNouveau->create_menu_item())); menuFichier.append(*(actionOuvrir->create_menu_item())); menuFichier.append(*(actionCompiler->create_menu_item())); Gtk::SeparatorMenuItem separateurMenu; menuFichier.append(separateurMenu); menuFichier.append(*(actionQuitter->create_menu_item())); /* * Barre d’outils */ Gtk::Toolbar barreOutils; boiteV.pack_start(barreOutils, Gtk::PACK_SHRINK); //Ajout d’actions à la barre d’outils. barreOutils.append(*(actionNouveau->create_tool_item())); barreOutils.append(*(actionOuvrir->create_tool_item())); barreOutils.append(*(actionCompiler->create_tool_item())); //Création d’un séparateur et ajout à la barre d’outils. Gtk::SeparatorToolItem separateurBarreOutils; barreOutils.append(separateurBarreOutils); barreOutils.append(*(actionQuitter->create_tool_item())); fenetre.show_all(); Gtk::Main::run(fenetre); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <ui> <menubar name="barreMenu"> <menu action="fichier"> <menuitem action="nouveau"/> <menuitem action="ouvrir"/> <separator/> <menuitem action="quitter"/> </menu> </menubar> <toolbar name="barreOutils"> <toolitem action="nouveau"/> <toolitem action="ouvrir"/> <separator/> <toolitem action="quitter"/> </toolbar> </ui> |
1 | Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create(); |
1 | uiManager->add_ui_from_file("menuBarreOutils.ui"); |
1 2 | Gtk::Widget* barreMenu = uiManager->get_widget("/barreMenu"); Gtk::Widget* barreOutils = uiManager->get_widget("/barreOutils"); |
1 | Gtk::Widget* barreOutils = uiManager->get_widget("/ui/barreOutils"); |
1 | Gtk::Widget* toolitemNouveau = uiManager->get_widget("/barreOutils/nouveau"); |
1 2 | boiteV.pack_start(*barreMenu, Gtk::PACK_SHRINK); boiteV.pack_start(*barreOutils, Gtk::PACK_SHRINK); |
1 | Glib::RefPtr<Gtk::Action> actionNouveau = Gtk::Action::create("nouveau", Gtk::Stock::NEW); |
1 | Glib::RefPtr<Gtk::ActionGroup> groupe = Gtk::ActionGroup::create(); |
1 | uiManager->insert_action_group(groupe); |
(UiManager:2471): Gtk-WARNING **: quitter: missing action quitter |
1 | groupe->add(actionNouveau); |
1 | groupe->add(Gtk::Action::create("fichier", "Fichier")); |
1 | groupe->add(Gtk::Action::create("quitter", Gtk::Stock::QUIT, "Quitter l’application", "Ferme l’application"), sigc::ptr_fun(&Gtk::Main::quit)); |
1 | fenetre.add_accel_group(uiManager->get_accel_group()); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <gtkmm/action.h> #include <gtkmm/box.h> #include <gtkmm/main.h> #include <gtkmm/stock.h> #include <gtkmm/uimanager.h> #include <gtkmm/window.h> int main(int argc, char* argv[]) { Gtk::Main app(argc, argv); Gtk::Window fenetre; Gtk::VBox boiteV; fenetre.add(boiteV); //Création d’un groupe d’actions. Glib::RefPtr<Gtk::ActionGroup> groupe = Gtk::ActionGroup::create(); //Création d’actions et ajout au groupe. groupe->add(Gtk::Action::create("fichier", "Fichier")); groupe->add(Gtk::Action::create("nouveau", Gtk::Stock::NEW)); groupe->add(Gtk::Action::create("ouvrir", Gtk::Stock::OPEN)); //Il est possible de spécifier une fonction de rappel au deuxième paramètre de la méthode add(). groupe->add(Gtk::Action::create("quitter", Gtk::Stock::QUIT, "Quitter l’application", "Ferme l’application"), sigc::ptr_fun(&Gtk::Main::quit)); //Création d’un gestionnaire d’interface utilisateur. Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create(); uiManager->insert_action_group(groupe); uiManager->add_ui_from_file("menuBarreOutils.ui"); //Pour que la fenêtre réagisse aux raccourcis-clavier des actions, il faut lui ajouter un groupe d’accélération (raccourcis). fenetre.add_accel_group(uiManager->get_accel_group()); Gtk::Widget* barreMenu = uiManager->get_widget("/barreMenu"); boiteV.pack_start(*barreMenu, Gtk::PACK_SHRINK); Gtk::Widget* barreOutils = uiManager->get_widget("/barreOutils"); boiteV.pack_start(*barreOutils, Gtk::PACK_SHRINK); fenetre.show_all(); Gtk::Main::run(fenetre); return 0; } |
1 | Gtk::Statusbar barreEtat; |
1 | int messageID = barreEtat.push("Vous pouvez commencer à utiliser l’application"); |
1 | barreEtat.remove_message(messageID); |
1 | barreEtat.remove_all_messages(); |

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #ifndef DEF_FENETRE #define DEF_FENETRE #include <string> #include <gtkmm/box.h> #include <gtkmm/button.h> #include <gtkmm/statusbar.h> #include <gtkmm/stock.h> #include <gtkmm/window.h> class Fenetre : public Gtk::Window { public: Fenetre(); bool afficherMessageEtat(GdkEventCrossing* event, std::string message); bool cacherMessageEtat(GdkEventCrossing* event); private: Gtk::Statusbar barreEtat; //Barre d’état. Gtk::VBox boiteV; Gtk::Button bouton; }; #endif |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include "Fenetre.hpp" Fenetre::Fenetre() : bouton(Gtk::Stock::QUIT) { add(boiteV); //Ajouter un message et récupérer son ID. int messageID = barreEtat.push("Vous pouvez commencer à utiliser l’application"); //Enlever le message à partir de son ID. barreEtat.remove_message(messageID); boiteV.pack_start(bouton); //Connexions de signaux au bouton afin d’afficher un message dans la barre d’état lorsqu’il est survolé. bouton.signal_enter_notify_event().connect(sigc::bind<std::string>(sigc::mem_fun(*this, &Fenetre::afficherMessageEtat), "Quitter l’application")); bouton.signal_leave_notify_event().connect(sigc::mem_fun(*this, &Fenetre::cacherMessageEtat)); //Un cas d’utilisation de pack_end() est l’ajout d’une barre d’état. boiteV.pack_end(barreEtat, Gtk::PACK_SHRINK); show_all(); } bool Fenetre::afficherMessageEtat(GdkEventCrossing* event, std::string message) { (void)event; barreEtat.push(message); return true; } bool Fenetre::cacherMessageEtat(GdkEventCrossing* event) { (void)event; barreEtat.remove_all_messages(); return true; } |
).
).
).
?).
Il n'y a pas encore de commentaire pour ce tuto.