lorenzo_ktm
27-06-2008, 18:02
il programma è il seguente:
#include<gtk/gtk.h>
#include<stdio.h>
static void enter_callback( GtkWidget *widget,
GtkWidget *entry )
{/* funzione che si occupa dell'input */
const gchar *entry_text;
entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
}
/* funzione eseguita al momento del click sul pulsante */
static void funzione ( GtkWidget *widget, GtkWidget *entry
/*gpointer data*/ )
{
const gchar *testo;
testo = gtk_entry_get_text (GTK_ENTRY (entry));
printf ("Testo: %s\n", testo);
}
int main(int argc,
char *argv[] )
{/* dichiarazione delle variabili widget */
GtkWidget *window;
GtkWidget *button;
GtkWidget *entry;
GtkWidget *box;
/* funzione gtk obbilgatoria */
gtk_init (&argc, &argv);
/* crea la finestra */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
/* settaggio di dimensioni e titolo della finestra*/
gtk_widget_set_size_request (GTK_WIDGET (window), 200, 100);
gtk_window_set_title (GTK_WINDOW (window), "esempio");
/* separatore verticale. la finestra può contenere un solo widget
per questo è necessario inserire dei "box" per aumentarne la capienza */
box = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), box);
gtk_widget_show (box);
/* text di ingresso (lunghezza max = 50 caratteri) */
entry = gtk_entry_new ();
gtk_entry_set_max_length (GTK_ENTRY (entry), 50);
g_signal_connect (G_OBJECT (entry), "activate",
G_CALLBACK (enter_callback),
(gpointer) entry);
gtk_widget_show (entry);
/* crea il pulsante con etichetta */
button = gtk_button_new_with_label ("clicca qui");
/* evento pressione del pulsante */
g_signal_connect (G_OBJECT (button), "button_press_event",
G_CALLBACK (funzione), (gpointer) entry);
gtk_container_add (GTK_CONTAINER (box), entry);
/* inserisce il pulsante nella finestra */
gtk_container_add (GTK_CONTAINER (box), button);
/* mostra gli widget */
gtk_widget_show (button);
gtk_widget_show (window);
/* funzione obbligatoria */
gtk_main();
return 0;
}
il programma è molto semplice.
visualizza una finestra con una text e un bottone.
quando il pulsante viene premuto dovrebbe scrivere a video quello che è scritto nella text.
Quando lo eseguo però al momento del click si chiude la finestra e stampa a video "Segmentation fault".
Qualcuno mi sa dire dov'è l'errore?
#include<gtk/gtk.h>
#include<stdio.h>
static void enter_callback( GtkWidget *widget,
GtkWidget *entry )
{/* funzione che si occupa dell'input */
const gchar *entry_text;
entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
}
/* funzione eseguita al momento del click sul pulsante */
static void funzione ( GtkWidget *widget, GtkWidget *entry
/*gpointer data*/ )
{
const gchar *testo;
testo = gtk_entry_get_text (GTK_ENTRY (entry));
printf ("Testo: %s\n", testo);
}
int main(int argc,
char *argv[] )
{/* dichiarazione delle variabili widget */
GtkWidget *window;
GtkWidget *button;
GtkWidget *entry;
GtkWidget *box;
/* funzione gtk obbilgatoria */
gtk_init (&argc, &argv);
/* crea la finestra */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
/* settaggio di dimensioni e titolo della finestra*/
gtk_widget_set_size_request (GTK_WIDGET (window), 200, 100);
gtk_window_set_title (GTK_WINDOW (window), "esempio");
/* separatore verticale. la finestra può contenere un solo widget
per questo è necessario inserire dei "box" per aumentarne la capienza */
box = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), box);
gtk_widget_show (box);
/* text di ingresso (lunghezza max = 50 caratteri) */
entry = gtk_entry_new ();
gtk_entry_set_max_length (GTK_ENTRY (entry), 50);
g_signal_connect (G_OBJECT (entry), "activate",
G_CALLBACK (enter_callback),
(gpointer) entry);
gtk_widget_show (entry);
/* crea il pulsante con etichetta */
button = gtk_button_new_with_label ("clicca qui");
/* evento pressione del pulsante */
g_signal_connect (G_OBJECT (button), "button_press_event",
G_CALLBACK (funzione), (gpointer) entry);
gtk_container_add (GTK_CONTAINER (box), entry);
/* inserisce il pulsante nella finestra */
gtk_container_add (GTK_CONTAINER (box), button);
/* mostra gli widget */
gtk_widget_show (button);
gtk_widget_show (window);
/* funzione obbligatoria */
gtk_main();
return 0;
}
il programma è molto semplice.
visualizza una finestra con una text e un bottone.
quando il pulsante viene premuto dovrebbe scrivere a video quello che è scritto nella text.
Quando lo eseguo però al momento del click si chiude la finestra e stampa a video "Segmentation fault".
Qualcuno mi sa dire dov'è l'errore?