2015-09-10 79 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