Προσθήκη κουμπιού στην εφαρμογή μας.
Αν κοιτάξουμε την ιεραρχία που ακολουθεί το παράθυρο θα δούμε ότι προέρχεται απο ένα container.
Δηλαδή κληρονομεί τις ιδιότητες του,αυτό σημαίνει ότι μπορεί να περιέχει κουμπιά,κείμενο ή και άλλους υποδοχείς.Αν θελήσουμε να βάλουμε ένα κουμπί στην εφαρμογή μας θα πρέπει να το προσθέσουμε στο container του παραθύρου.Αυτό γίνεται με μία συνάρτηση,θα πρέπει πρώτα όμως να το δηλώσουμε και έπειτα να το αρχικοποιήσουμε.
- Κώδικας: Επιλογή όλων
GtkWidget * button;
- Κώδικας: Επιλογή όλων
button = gtk_button_new();
Στην επόμενη συνάρτηση προσθέτουμε το κουμπί στον υποδοχέα του παραθύρου.
- Κώδικας: Επιλογή όλων
gtk_container_add (GTK_CONTAINER (window), button);
Σαν πρώτη παράμετρο η συνάρτηση δέχεται ένα container,για να περάσουμε το container του παράθυρου μας χρησιμοποιούμε μία μακροεντολή.
Επίσης θα πρέπει το παράθυρο μας να έχει διαστάσεις.
- Κώδικας: Επιλογή όλων
gtk_window_set_default_size(GTK_WINDOW(window), 250, 250);
Η διαδικασία που ακολουθούμε λέγεται type casting.Δίνοντας στην μακροεντολή ένα αντικείμενο αυτή μας επιστρέφει ένα δείκτη στη δομή που ζητάμε.
Αν θέλουμε να αλλάξουμε τον τίτλο.
- Κώδικας: Επιλογή όλων
gtk_window_set_title(GTK_WINDOW(window),"Ubuntu");
Αλλιώς το παράθυρο παίρνει το όνομα του προγράμματος.
Αν θέλουμε να αλλάξουμε το όνομα του κουμπιού μας.
- Κώδικας: Επιλογή όλων
gtk_button_set_label(GTK_BUTTON(button),"Ubuntu button");
gtk_widget_show(window);
- Κώδικας: Επιλογή όλων
gtk_widget_show_all(window);
Το πρόγραμμα
- Κώδικας: Επιλογή όλων
#include <gtk/gtk.h>
int main( int argc,
char *argv[] )
{
GtkWidget *window,*button;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
button = gtk_button_new();
gtk_container_add (GTK_CONTAINER (window), button);
gtk_window_set_default_size(GTK_WINDOW(window), 250, 250);
gtk_window_set_title(GTK_WINDOW(window),"Ubuntu");
gtk_button_set_label(GTK_BUTTON(button),"Ubuntu button");
g_signal_connect (window, "destroy",G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main ();
return 0;
}