Exemplo simples

Para iniciar a introdução ao gtkmm, comecemos com o programa mais simples possível. Este programa cria uma janela vazia com 200 x 200 pixels.

Código-fonte

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

Explicaremos agora cada linha do exemplo

#include <gtkmm.h>

Todos os programas gtkmm devem incluir certos cabeçalhos do gtkmm; gtkmm.h inclui todo o kit gtkmm. Isso normalmente não é uma boa ideia, porque inclui um megabyte ou mais de cabeçalhos, mas, para programas simples, é o suficiente.

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.

As próximas duas linhas de código criam e exibem uma janela:

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

Depois de colocar o código-fonte em simple.cc, você pode compilar o programa acima com o gcc usando:

g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs`
Note que você deve envolver a invocação do pkg-config com acentos graves. Os acentos graves fazem com que o shell executem o comando dentro deles, e a usar a saída desse comando como parte da linha de comando.