ฉันต้องการอัปเดตการป้อนข้อความในเหตุการณ์การกดปุ่ม
สถานการณ์ของฉันไม่มีแป้นพิมพ์ ดังนั้นฉันจึงสร้างมันขึ้นมาโดยทางโปรแกรมและพยายามอัปเดตการป้อนข้อความจากตัวจัดการเหตุการณ์การกดปุ่ม
ในการกดปุ่มแต่ละครั้ง ฉันจำเป็นต้องอัปเดตรายการข้อความในหน้าต่าง GTK ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร? ฉันเหนื่อย
gtk_entry_set_text (GTK_ENTRY (entry1), buffer);
แต่มันทำให้เกิดความผิดพลาดในการแบ่งส่วน
ฉันจะได้รับข้อมูลจากเธรดผู้ใช้อื่น ฉันต้องอัปเดตการป้อนข้อความด้วยข้อมูลใหม่และแสดงหน้าต่าง gtk ด้วยการป้อนข้อความที่อัปเดต
ต่อไปนี้เป็นรหัสที่สมบูรณ์ของฉัน:
GtkEntry *entry1;
static gboolean kp_event_S1_1(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
printf(" - kp_event_S1_1 - \n");
gtk_entry_set_text (GTK_ENTRY (entry1), buffer);
}
void S1_1(void )
{
GtkWidget *Win_1;
GtkBuilder *builder;
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "/home/glade/glade1.glade", NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "Win_1"));
g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit),NULL );
g_signal_connect(G_OBJECT (window), "key_press_event", G_CALLBACK (kp_event_S1_1), NULL);
gtk_widget_show_all(window);
gtk_main();
}
gtk_entry_set_text
เป็น API ที่ถูกต้อง การรับข้อผิดพลาดในการแบ่งเซ็กเมนต์หมายความว่าentry1
ไม่ใช่อินสแตนซ์GtkEntry *
หรือbuffer
ไม่ใช่สตริงที่สิ้นสุดด้วย NUL: มันง่ายมาก - person ntd   schedule 29.05.2015buffer
อยู่ไหน? มีการประกาศอย่างไร? คุณยังไม่แสดงมันออกมาเลย และการอัพเดตจากกระทู้อื่นฟังดูน่ากลัวมาก ลองใช้ค่าคงที่ (ตัวอักษรสตริง) แทนbuffer
ในการเรียก ดูว่าได้ผลหรือไม่ - person unwind   schedule 29.05.2015//create window
ได้หรือไม่ - person andlabs   schedule 29.05.2015entry1
จากไฟล์ตัวสร้างของคุณ! - person andlabs   schedule 30.05.2015