cppgtk:intro
Ceci est une ancienne révision du document !
C++ et GTKmm
Petit aide mémoire pour installer VSCode (ou Builder), sans soublier Glade et les configurer pour C++ et GTKmm sous Linux.
Et aussi quelques proposition d'organisation du code autour de GTKmm et Glade :
- Une structure Gtkmm main.cpp déléguant à un App Contrôleur de type
RefPtr<Gtk::Application>
Commençons par VSCode : téléchargement de la dernière version au format .deb
insttallation
sudo dpkg -i code_1.74.2-xxxx_amd64.deb
C et CPP pour utilisation GTKmm via un App Controller
main.cpp
#include "AppCtrl.h" int main(int argc, char *argv[]) { int retour; //Création d'un appli Gtk::Application Glib::RefPtr<Gtk::Application> lAppli = Gtk::Application::create("org.gnome.Essai", Gio::APPLICATION_FLAGS_NONE); //Connection de l'application et délégation du signal d'activation au controleur AppCtrl *leController; leController = new AppCtrl(lAppli); lAppli->signal_activate().connect(sigc::mem_fun(leController, &AppCtrl::on_Activate)); //retour retour = lAppli->run(argc,argv); return retour; }
et du côté App Controleur
AppCtrl.h
#pragma once #include <gtkmm.h> #include <stdio.h> #include "EditorWW.h" /* Controleur de l'Application : reçois l'instance gtkApplication créée dans main Gère l'ajout / suppression de fenêtre à cette instance Tiens la liste des contenant de fenetres (WindowWrapper - WW) */ class AppCtrl { public: Glib::RefPtr<Gtk::Application> lAppli; EditorWW *instanceEditeurWW; void on_Activate(); AppCtrl (Glib::RefPtr<Gtk::Application> lAppliInit); ~AppCtrl(); };
AppCtrl.cpp
#include "AppCtrl.h" void AppCtrl::on_Activate() { if(!instanceEditeurWW){ instanceEditeurWW = new EditorWW(); instanceEditeurWW->laFenetre->property_application() = lAppli; lAppli->add_window(*(instanceEditeurWW->laFenetre)); } // instanceEditeurWW->laFenetre->present(); //instanceEditeurWW->Dessine(); } AppCtrl::AppCtrl(Glib::RefPtr<Gtk::Application>lAppliInit) { lAppli = lAppliInit; }
cppgtk/intro.1672580679.txt.gz · Dernière modification : 2023/01/01 14:44 de 192.168.1.254