Un exemple simple

Comme entrée en matière avec gtkmm, nous débuterons avec le programme le plus simple qui soit. Ce programme crée une fenêtre vide de 200 x 200 pixels.

Code source

File: base.cc (For use with gtkmm 3, not gtkmm 2)

#include <gtkmm.h>

int main(int argc, char *argv[])
{
  Glib::RefPtr<Gtk::Application> app =
    Gtk::Application::create(argc, argv,
      "org.gtkmm.examples.base");

  Gtk::ApplicationWindow window;

  return app->run(window);
}

Détaillons maintenant chaque ligne de l'exemple

#include <gtkmm.h>

Tous les programmes gtkmm doivent inclure certains fichiers d'en-tête gtkmm ; gtkmm.h inclut la totalité du jeu d'en-têtes gtkmm. En règle générale, ce n'est pas une bonne idée parce que cette façon de faire inclut à peu près un mégaoctet d'en-têtes, mais pour des programmes simples, c'est acceptable.

The next line:

Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
creates a Gtk::Application object, stored in a RefPtr smartpointer. This is needed in all gtkmm applications. The create() method for this object initializes gtkmm, and checks the arguments passed to your application on the command line, looking for standard options such as -display. It takes these from the argument list, leaving anything it does not recognize for your application to parse or ignore. This ensures that all gtkmm applications accept the same set of standard arguments.

Les deux lignes de code suivantes créent et affichent une fenêtre :

Gtk::Window window;

The last line shows the window and enters the gtkmm main processing loop, which will finish when the window is closed. Your main() function will then return with an appropriate success or error code.

return app->run(window);

Après avoir incorporé ces lignes de code source dans simple.cc, vous pouvez compiler ce programme avec la commande :

g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs`
Notez qu'il est impératif d'entourer l'appel à pkg-config d'apostrophes inverses. Elles demandent à l'interpréteur de commandes d'exécuter la commande entourée et d'intégrer au même emplacement la sortie correspondante dans la ligne de commande.