GTK+3系列教程4:添加事件處理

每天進步一點點,用實際行動實現(xiàn)你偉大的夢想。

老規(guī)矩,先上代碼。

代碼
運行截圖

這節(jié)就講一個函數(shù)就ok了,這個牛逼的函數(shù)就是g_signal_connect();? 此函數(shù)將控件和事件處理函數(shù)聯(lián)系起來。上面代碼中g_signal_connect(button1, "clicked", G_CALLBACK (button1_handler), NULL); 就是將button1這個控件和button1_handler這個事件處理函數(shù)聯(lián)系起來。這個函數(shù)的API參考如下:

g_signal_connect()參考用法

? 第一個參數(shù)是控件實例,這里是button1,第二個參數(shù)是信號實例clicked,第三個參數(shù)是事件處理函數(shù)GCallback,這里是button1_handler,最后一個參數(shù)是額外數(shù)據(jù)NULL。

其中需要注意的是第三個參數(shù)這里寫的是G_CALLBACK (button1_handler),因為button1_handler本質(zhì)上只是一個函數(shù)而不是GCallback,我們先搞清楚GCallback是什么,參考官方文檔如下:

GCallback官方參考

? 注意看最后一句話,使用G_CALLBACK()將回調(diào)函數(shù)轉換為GCallback。我們繼續(xù)看G_CALLBACK()。

G_CALLBACK()官方參考

? 原來G_CALLBACK()是用于將函數(shù)轉換成GCallback的宏定義。

? g_print("Hello World\n");? 是將參數(shù)輸出到stdout(標準輸出),需要自行添加\n來實現(xiàn)分行,也不適合用于(debug)調(diào)試。參考文檔如下。

g_print()官方參考

? 下面再來深入分析下g_signal_connect()和事件處理函數(shù)之間的關系,上圖。

關系圖

? 圖中箭頭雙方都是相互關聯(lián)的?,F(xiàn)在就很清楚了吧。

? 下節(jié)教程將介紹各種布局的使用。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容