首頁 / LinuxDev / GTK+ 2.0 教學-信號的發射和傳播

GTK+ 2.0 教學-信號的發射和傳播

信號發射是 GTK 為指定的物件和信號執行所有處理函式的過程。

首先,注意從信號發射傳回的值是最後一個處理函式執行後傳回的值。因為所有事件信號都是 GTK_RUN_LAST 型別,GTK 提供的處理函式將成為預設處理函式,除非你用 gtk_signal_connect_after() 設置連接。

一個事件 (如”button_press_event”) 的處理過程是:

  • 從事件發生的元件開始。
  • 發出通常的 “event” 信號。如果信號處理函式返回 TRUE 值,停止所有的處理。
  • 否則,發出一個指定的,”button_press_event” 信號。如果它傳回 TRUE,停止所有的處理。
  • 否則,轉到父元件,重複前兩步。
  • 繼續直到某些信號處理函式傳回 TRUE,或者直到達到了最頂層的元件。

上述問題的一些重點是:

  • 如果信號有一個預設的處理函式,那麼你的處理函式傳回的值不起作用,除非你用 gtk_signal_connect_after() 設置連接。(譯者註:這是因為預設處理函式最後執行,而信號發射的傳回值取最後一個處理函式的傳回值。)
  • 為了阻止預設的信號處理函式運行,你需要用 gtk_signal_connect() 設置連接,並使用 gtk_signal_emit_stop_by_name() – 傳回值之影響信號是否傳播,不影響當前信號的發射。(譯者註:也就是說,gtk_signal_emit_stop_by_name() 才影響信號的發射。停止發射,就使連接到這個信號的其它函式不繼續被呼叫。)
Print Friendly, PDF & Email
馬上成為工作達人的Fans

About ㄚ琪

工作達人Fun Taiwan的創辦者及總編,可以在這裡更認識他。

One comment

發表迴響

你的電子郵件位址並不會被公開。 Required fields are marked *

*

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

Scroll To Top