|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 62
|
[C con Gtk+2] problemi con le gtk...
il programma è il seguente:
Codice:
#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? Ultima modifica di lorenzo_ktm : 27-06-2008 alle 19:46. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7262
|
puoi inserire il codice nei tag CODE? così si capisce poco
sembrerebbe che usi un puntatore a NULL |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 62
|
ho aggiunto il tag code e ingrassettato le funzioni.
è più chiaro adesso? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7262
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Che io sappia, le funzioni di callback di GTK+ prendono il GtkWidget* che ha generato l'evento come primo parametro, e un gpointer di dati opzionali come secondo parametro. Ergo: usa il primo parametro, non il secondo, dovrebbe funzionare.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:23.




















