2
다음
에 GTK +에 콜백을 신호하는 것은 내 코드입니다 :통과 인수/인수가 C
#include <gtk/gtk.h>
G_MODULE_EXPORT void waka(GtkWidget *button, GtkWidget* entry1)
{
printf("%s",gtk_entry_get_text(GTK_ENTRY(entry1)));
}
int main(int argc, char * argv[])
{
GtkWidget *window, *button, *entry;
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
button = gtk_button_new_with_label("hha");
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(waka),entry);
entry = gtk_entry_new();
GtkWidget *vbox;
vbox = gtk_vbox_new(FALSE,2);
gtk_box_pack_start_defaults(GTK_BOX(vbox),button);
gtk_box_pack_start_defaults(GTK_BOX(vbox),entry);
gtk_container_add(GTK_CONTAINER(window),vbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
내가 그것을 실행하고 버튼을 클릭 한 다음 입력 상자에서 일부 문자열을 채우기 위해 시도하고, 그것을 고 말했다. 무슨 일 이니?
또한 콜백은 하나의 사용자 데이터 인수에서만 작동합니다. 두 개 이상의 인수가 필요하면 어떻게해야합니까? 콜백 함수와 g_signal_connect()
에 대한 호출에서 수행해야하는 작업은 무엇입니까?
들으 친구를, 안부 전을 구조체를 사용해야합니까? 또는 전 세계적으로 위젯을 선언해야합니다 (예 : static var/out of function var) ?? – capede
콜백의 두 번째 매개 변수를 사용하여 위젯 배열이나 위젯 목록 또는 사용자 정의 구조에 대한 포인터를 비롯하여 필요한 모든 데이터를 전달할 수 있습니다. –