Saya ingin memperbarui entri teks pada acara penekanan tombol.
Skenario saya tidak memiliki keyboard, jadi saya membuatnya secara terprogram dan mencoba memperbarui entri teks dari event handler penekanan tombol.
Pada setiap penekanan tombol, saya perlu memperbarui entri teks di jendela GTK. Bagaimana saya bisa mencapainya? Saya mencoba
gtk_entry_set_text (GTK_ENTRY (entry1), buffer);
tapi itu memberikan kesalahan segmentasi.
Saya akan mendapatkan data dari beberapa utas pengguna lain, saya perlu memperbarui entri teks dengan data baru dan menampilkan jendela gtk dengan entri teks yang diperbarui.
Berikut ini adalah kode lengkap saya:
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
adalah API yang benar. Mendapatkan kesalahan segmentasi berartientry1
bukan instanceGtkEntry *
ataubuffer
bukan string yang diakhiri NUL: sesederhana itu. - person ntd   schedule 29.05.2015buffer
? Bagaimana cara mendeklarasikannya? Anda masih belum menunjukkannya. Dan diperbarui dari thread lain terdengar sangat menakutkan. Coba dengan konstanta (string literal) alih-alihbuffer
dalam panggilan, lihat apakah itu berhasil. - person unwind   schedule 29.05.2015//create window
? - person andlabs   schedule 29.05.2015entry1
dari file pembuat Anda! - person andlabs   schedule 30.05.2015