Tutoriál: první program v GTK s použitím glade XML

GTK je dnes jedním z nejčastěji používaných nástrojů pro vytváření grafických aplikací pod Linuxem. My se podíváme na úplně nejzákladnější program, který snad usnadní bolestné první kroky s GTK.

Preferovaný způsob tvorby grafických rozhraní je pomocí kreslícího nástroje Glade. Ten jako výstup vytvoří XML soubor s příponou glade. Tento soubor následně otevřeme ve svém C kódu a načteme z něj veškerou grafiku.

/* tutorial.c */
#include <gtk/gtk.h>
#include <glade/glade-init.h>
#include <glade/glade-xml.h>

void destroy_handler (GtkWidget *ignored, gpointer happily_ignored)
{
	gtk_main_quit();
}

int main( int argc, char *argv[])
{
	GtkWidget *window;
	GladeXML *xml;

	gtk_init(&argc, &argv);

	glade_init();
	xml = glade_xml_new("tutorial.glade", "window1", NULL);
	window = glade_xml_get_widget (xml, "window1");

	gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (destroy_handler), NULL);

	gtk_widget_show(window);
	gtk_main();
	return 0;
}

Kód je dost samopopisný. Nejdříve vložíme hlavičkové soubory. Následuje definice handleru, který se zavolá při události destroy (zavření okna). V hlavní funkci main je inicializováno gtk a také glade. Pak už načteme samotný glade XML soubor a vytáhmeme si z něj jeden widget - window, tedy hlavní okno. Propojíme událost destroy s handlerem. Zobrazíme okno a nakonec spustíme hlavní nekonečnou smyčku. Ta je ukončena až při volání funkce gtk_main_quit.

Kompilace

Program můžeme zkompilovat buď přímo:

gcc -Wall -pedantic -o tutorial tutorial.c `pkg-config --libs --cflags gtk+-2.0 libglade-2.0`

a nebo pomocí Makefilu (příkaz make):

CC	=	gcc
CFLAGS	=	-Wall -pedantic
LIBS	= `pkg-config --libs --cflags gtk+-2.0 libglade-2.0`

all: tutorial

tutorial: tutorial.c
	$(CC) $(CFLAGS) $@.c $(LIBS) -o $@

clean:
	-rm tutorial

Ke stažení

tutorial.c tutorial.glade Makefile

Hodnocení

Komentáře

[1] smith
2014-08-26 22:10:33

I have tried this already and found that it is effective. I am looking to have more like this. http://www.mbstrade.co.uk/wholesale-towels.html

Komentáře již nelze přidávat