본문 바로가기
컴퓨터 관련/Linux || Unix

GTK+ 이벤트[2] g_signal_connect과 g_signal_connect_swapped 의 차이점

by _BlankSpace 2017. 4. 23.

GTK를 하면서 가장 궁금했던 점은 g_signal_connect과 g_signal_swapped 의 차이점이었다.

비슷한 기능인데, 굳이 왜 존재하는 함수일까라는 의문이 많이 들었다.

이러한 고민을 하는 분에게 간단하게 소개하고자 한다.

1
2
3
g_signal_connect_swapped (button, "clicked", (GCallback) gtk_widget_hide,
 
other_widget);
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
static void button_clicked_cb (GtkButton* button, GtkWidget* other_widget)
 
{
 
gtk_widget_hide (other_widget);
 
}
 
...
 
g_signal_connect (button, "clicked", (GCallback) button_clicked_cb,
 
other_widget);
cs

위의 두 소스는 결국 같은 기능을 한다. 

이처럼 g_signal_connect는 추가로 사용자 함수를 만들어 정의를 해야하지만, g_signal_swapped 는 gtk_widget_hide처럼 미리 정의한 기능을 사용한다면 더 간단하게 코드를 작성할 수 있다.

결국, 더 간단하게 작성하느나 아니냐에 따라 두 함수가 존재하는 것으로 생각된다.

물론, 내가 레퍼런스를 많이 찾아본 것은 아니다. 그러므로 틀릴 수 있으나, GNOME Developer의 문서를 참조하여 정리하였기 때문에 어느정도 신뢰는 할 수 있으리라 생각한다.

만약 다른 내용으로 알고 계신다면 댓글을 달아주셔서 더 나은 정보가 될 수 있도록 도움주셨으면 좋겠습니다.

댓글