2015-09-10 77 views
0

对于我的GUI有一些按钮。如果我要更改或更新从列表中选择的随机按钮的标签,我应该怎么做?更新或更改C中的按钮标签

按钮的初始名称写入按钮属性中。我的GUI设计在Glade

现在我将在我的GUI中的输入文本中输入新名称。

我为此创建了一个更新按钮。如何在Gtk课程中做到这一点。

的相关代码如下:在窗口和按钮的

创造和发现它。

UpdateButton = GTK_WIDGET(gtk_builder_get_object(builder, "UpdateButton")); 
gtk_signal_connect (GTK_OBJECT (UpdateButton), "clicked", GTK_SIGNAL_FUNC (Update_Data), NULL); 

点击更新按钮。

void Update_Data(GtkWidget *widget, gpointer data) 
    { 
        const gchar *entry_text1; 
        const gchar *entry_text2; 
        const gchar *entry_text3; 

    g_print ("You have clicked Update... - %s was pressed\n", (char *) data); 

      entry_text1 = gtk_entry_get_text (GTK_ENTRY (entry1)); 
      entry_text2 = gtk_entry_get_text (GTK_ENTRY (entry2)); 
      entry_text3 = gtk_entry_get_text (GTK_ENTRY (entry3)); 

    char sql[300]; 
    sprintf(sql, "UPDATE DEVICES set NAME='%s ',\nUSERNAME='%s ',\nPASSWORD='%s '\nwhere ID=%s;" 
       , entry_text1, entry_text2, entry_text3, updateid); 
    //updateid is the ID taken from the array when a button is clicked 

     inserDatabase("myDatabase.db", sql); 
     getlastEntry(); //for taking the last entered info 
     updateData(sql); //for updating in database 
    } 

如果需要更多信息,我会帮你。请问问!

回答

3

你的问题还不清楚,但如果我理解正确的话...

你得到的按钮...

GtkButton *click_button; // Button to click 
GtkButton *change_button; // Button that changes label 

click_button = GTK_BUTTON (gtk_builder_get_object (builder, "click_button")); 
change_button = GTK_BUTTON (gtk_builder_get_object (builder, "change_button")); 

定义一个函数click事件来设置标签。 ..

static void 
change_button_label (GtkWidget *click_button, 
        gpointer user_data) 
{ 
    GtkButton *change_button = (GtkButton *) user_data; 
    gtk_button_set_label (change_button, "New Label"); 
} 

点击信号功能连接到该按钮,并通过它的变化按钮...

g_signal_connect (click_button, "clicked", G_CALLBACK (change_button_label), change_button); 
+0

Ok @ Coffee'd你能告诉我现在如何在输入文本中输入新名称时更改标签吗? – djgharphalia07

+1

@ djgharphalia07这取决于。你如何获取和存储文本?例如,您可以像这样获取文本:'const gchar * button_text = gtk_entry_get_text(text_entry);',其中'text_entry'是'GtkEntry'小部件。然后你可以像下面这样使用'button_text':'gtk_button_set_label(change_button,button_text);'然而,这要求'button_text'是一个全局变量,或者将'change_button'和'text_entry'小部件都存储在一个struct中并将其传递给点击信号功能。 –

+0

你非常接近:)而且我非常感谢你如此快速的回应!其实我将按钮信息存储在数据库中。所以,更新也会在数据库中发生变化。我已经做了一切,但我无法得到更新后的按钮在进入按钮后,而不是再次运行我的代码来获得新的标签:( – djgharphalia07