Outils pour utilisateurs

Outils du site


cppgtk:intro

Ceci est une ancienne révision du document !


C++ et GTKmm

Petit aide mémoire pour installer VSCode ou Builder et les configurer pour C++ et GTKmm sous Linux.

Et aussi quelques proposition d'organisation du code pour fonctionner bien avec Glade.

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.1671395916.txt.gz · Dernière modification : 2022/12/18 21:38 de alexis

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki