문제

GUI 디자인에 Glade-3을 사용하고 있지만 계속 해서이 문제를 겪고 있습니다. GTK+ 문서 매핑 신호는 이벤트 또는 GLADE-3 (3.4.5)에 아무것도 볼 수 없습니다. 이 정보를 찾을 수있는 GTK+ 소스 코드에 위치가 있습니까?

참고 :이 질문에서는 이벤트와 신호가 GTK에서 동일하지 않다는 것을 인식하는 것이 중요합니다.

예시:

다음 신호를 받기 위해 다음 이벤트가 필요한 이벤트 상자가 있습니다. 주어진 신호에 필요한 이벤트를 어떻게 결정합니까?

Events: GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK
Signals: leave_notify_event, enter_notify_event
도움이 되었습니까?

해결책

좋아, 나는 당신이 지금 무슨 뜻인지 알고 있다고 생각합니다.이 테이블이 GTK 신호와 GDK 이벤트와 일치하는 것을 발견했습니다. 여기있어.

다른 팁

귀하의 질문을 올바르게 해석했다고 가정하면 Glade 파일에 지정한 신호를 소스 코드의 함수에 연결하려고합니다. 이를 수행하는 방법은 파일을로드하여 파일을 생성하거나 gtkbuilder를로드하기 위해 Libglade를 사용하는 경우에 따라 다릅니다. 둘 다 비슷하지만 C의 샘플을 완료하기 위해 샘플을 제공합니다.

libglade를 사용하면 그렇게 할 것입니다.

GladeXml *xml = glade_xml_new(filename, NULL, NULL); // Load the file
glade_xml_signal_autoconnect(xml); // Connect the signals

gtkbuilder를 사용하면 다음과 같습니다.

GtkBuilder *xml = gtk_builder_new();
gtk_builder_add_from_file(xml, filename, NULL); // Load the file
gtk_builder_connect_signals(xml, NULL); // Connect the signals

GTKBuilder를 사용하는 경우 Signal Connect 기능의 두 번째 매개 변수를 데이터에 대한 포인터로 대체 한 다음 신호 처리기로 전달됩니다.

앞으로 나는 libglade가 더 이상 사용되지 않기 때문에 gtkbuilder를 사용하는 것이 좋습니다.

연결

다음은 위에서 언급 한 두 기능에 대한 관련 문서에 대한 링크입니다.

이벤트를 캡처 할 수 있습니다 gdk_event_handler_set()

먼저 시작시 자신의 GDK 이벤트 핸들러 등록 :

gdk_event_handler_set(my_gdk_event_handler, NULL, NULL);

... 그런 다음 유용한 정보를 인쇄하는 데 사용하고 이벤트를 GTK+에 전달하는 것을 잊지 마십시오. gtk_main_do_event() 여기서 :

void my_gdk_event_handler(GdkEvent *event, gpointer data)
{
    printf("Received GdkEvent of type %d", event->type);

    gtk_main_do_event(event); // Pass event to GTK+
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top