2012-07-18 66 views
0

我有一个文本框询问一个值。我如何捕获这个值并将其传递给另一个函数?如何使用在GTK文本框中输入的值?

int main (int argc, char *argv[]) { 
    GtkWidget *window,*table,*label,*entry; 
    gtk_init(&argc, &argv); 

    //Create the main window 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    initialize_window(window); 

    /* Create a 1x2 table */ 
    table = gtk_table_new (1, 2, TRUE); 
    gtk_container_add (GTK_CONTAINER (window), table); 

    /* create a new label. */ 
    label = gtk_label_new ("Enter some text:"); 
    //gtk_misc_set_alignment (GTK_MISC (label), 0, 0); 
    gtk_table_set_homogeneous(GTK_TABLE (table), TRUE); 
    gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 0, 1); 

    //create a text box 
    // entry = gtk_entry_new(); 
    gtk_entry_set_max_length (GTK_ENTRY (entry),0); 
    gtk_table_attach_defaults (GTK_TABLE (table), entry, 0, 1, 0, 1); 
    gtk_widget_show_all(window); 
} 

现在我想使用这个值并将它传递给一些函数。

+0

您何时想访问文本?在发射信号时? – XORcist 2012-07-18 18:14:59

+0

@moter雅值作为输入的文本框中,我需要这个值,并将其传递给另一个函数,这基本上是我的算法 – shalini 2012-07-18 18:16:35

回答

2

像这样的东西应该工作。当输入键被按下,entry_activated将被称为:

static void entry_activated(GtkEntry *entry, gpointer user_data) 
{ 
    int i; 
    const gchar *entered = gtk_entry_get_text(entry); 

    i = atoi(entered); // strtol() would be better, but this will work. 

    g_message("Entry: %d", i); 
} 

int main (int argc, char *argv[]) { 
    /* ... stuff ... */ 

    entry = gtk_entry_new(); 
    g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(entry_activated), NULL); 

    /* ... stuff ... */ 
} 
+0

我需要一个整数值我,并将其传递给你好(我); u能告诉我如何修改我们的代码为 – shalini 2012-07-18 19:15:15

+0

静态无效entry_activated(* GtkEntry中的条目,gpointer USER_DATA) { 常量gchar *进入= gtk_entry_get_text(项); int i =(int)进入; g_print(“Entry:%d”,i); // g_free(i); } – shalini 2012-07-18 19:35:45

+0

当我试图做到这一点是给我的垃圾价值 – shalini 2012-07-18 19:36:16

1

作为一个侧面说明,如果你想要的是一个数值,你会更好摆在首位使用GtkSpinButton。那么你不必经历转换字符串的麻烦。就目前而言,用户仍然可以输入任何文本,并可能搞砸你的程序。

您可以

GtkWidget *sbutton = gtk_spin_button_new_with_range(<minimum>, <maximum>, <step>); 

很容易地创建一个数值调节钮,然后连接到“价值化”的信号。然后,只需提取值

gdouble value = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sbutton)); 
+0

好的,我会试试.... – shalini 2012-07-22 05:32:46

相关问题