GTK3學習筆記2 Hello World in GTK+
例子很簡單,實現了視窗和一個普通按鈕,效果如圖:
原始碼如下,有很簡單的英文註釋,容易看懂,就不翻譯了:
#include <gtk/gtk.h> /* 下面是兩個回撥函式 */ static void print_hello (GtkWidget *widget, gpointer data) { g_print ("Hello World\n"); } static gboolean on_delete_event (GtkWidget *widget, GdkEvent *event, gpointer data) { /* If you return FALSE in the "delete_event" signal handler, * GTK will emit the "destroy" signal. Returning TRUE means * you don't want the window to be destroyed. * * This is useful for popping up 'are you sure you want to quit?' * type dialogs. */ g_print ("delete event occurred\n"); return TRUE; } int main (int argc, char *argv[]) { /* GtkWidget is the storage type for widgets */ GtkWidget *window; GtkWidget *button; /* This is called in all GTK applications. Arguments are parsed * from the command line and are returned to the application. */ gtk_init (&argc, &argv); /* create a new window, and set its title */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Hello"); /* When the window emits the "delete-event" signal (which is emitted * by GTK+ in response to an event coming from the window manager, * usually as a result of clicking the "close" window control), we * ask it to call the on_delete_event() function as defined above. * * The data passed to the callback function is NULL and is ignored * in the callback function. */ g_signal_connect (window, "delete-event", G_CALLBACK (on_delete_event), NULL); /* Here we connect the "destroy" event to the gtk_main_quit() function. * * This signal is emitted when we call gtk_widget_destroy() on the window, * or if we return FALSE in the "delete_event" callback. */ g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); /* Sets the border width of the window. */ gtk_container_set_border_width (GTK_CONTAINER (window), 10); /* Creates a new button with the label "Hello World". */ button = gtk_button_new_with_label ("Hello World"); /* When the button receives the "clicked" signal, it will call the * function print_hello() passing it NULL as its argument. * * The print_hello() function is defined above. */ g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL); /* The g_signal_connect_swapped() function will connect the "clicked" signal * of the button to the gtk_widget_destroy() function; instead of calling it * using the button as its argument, it will swap it with the user data * argument. This will cause the window to be destroyed by calling * gtk_widget_destroy() on the window. */ g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); /* This packs the button into the window. A GtkWindow inherits from GtkBin, * which is a special container that can only have one child */ gtk_container_add (GTK_CONTAINER (window), button); /* The final step is to display this newly created widget... */ gtk_widget_show (button); /* ... and the window */ gtk_widget_show (window); /* All GTK applications must have a gtk_main(). Control ends here * and waits for an event to occur (like a key press or a mouse event), * until gtk_main_quit() is called. */ gtk_main (); return 0; }
下篇部落格起,文章長度會增加,對於一些函式將會進行相對詳細的中文介紹。
其實GTK3和GTK2的很多基礎的函式沒有變動,可以參照中文的GTK2教程來閱讀官網的GTK3教程,我的部落格只是拋磚引玉哈哈,這篇就寫到這。
相關推薦
GTK3學習筆記2 Hello World in GTK+
例子很簡單,實現了視窗和一個普通按鈕,效果如圖: 原始碼如下,有很簡單的英文註釋,容易看懂,就不翻譯了: #include <gtk/gtk.h> /* 下面是兩個回撥函式 */ static void print_hello (GtkWidget *
機器學習筆記1 - Hello World In Machine Learning
之間 項目 圍棋 gpu 強勁 大量數據 特殊 轉換成 [1] 前言 Alpha Go在16年以4:1的戰績打敗了李世石,17年又以3:0的戰績戰勝了中國圍棋天才柯潔,這真是科技界振奮人心的進步。伴隨著媒體的大量宣傳,此事變成了婦孺皆知的大事件。大家又開始激烈的討論機器人什
【JavaScript學習筆記】hello world
div color html pre 學習筆記 bsp body pan class <html> <body> <script language="JavaScript"> al
SpringMVC 學習筆記(一) Hello World
pragma pan 自己掃描 framework print 一個 頁面 poj OS springMVC概述: Spring MVC 是目前最主流的MVC 框架之一 Spring MVC 通過一套 MVC 註解,讓 POJO 成為處理請 求的控制器,而無須實現任何接
CockroachDB學習筆記——[譯]Hello World
eve 尋找 速度 缺失 ogl 集群 創建 缺陷 學習 原文鏈接:https://www.cockroachlabs.com/blog/hello-world/ 原作者:Spencer Kimball 原文日期:Jun 4, 2015 譯:zifeiy 數據庫是世界
python學習筆記01 --------------hello world 與變數。
1.第一個程式: print('hello world') 輸出結果: hello world 2.變數 2.1 變數的作用: 把程式運算的中間結果臨時存到記憶體裡,以備後面的程式碼繼續呼叫。 2.2 變數的宣告方式: 變數名(識別符號) = 值
Swift學習筆記一 hello world
學習任何語言都是從hello world開始的,哈哈哈 開始我的swift學習之旅 //這個好像就是類似於OC的懶載入 (個人觀點--菜雞觀點) fileprivate var helloB
arduino學習筆記1 hello world和LED燈的使用
ps.每個例程實驗第一組是購買arduino是附贈的例程程式碼,第二組是在原基礎上進行修改的練習 1.Hello World! 只需要arduino uno板一塊 int val;//定義變數val int ledpin=3;//定義數字介面13 void setup() {
Spring 學習筆記一 hello world
最近沒事兒可幹,無意中,想學習一下Spring的東西,於是就上網搜資料,找了一堆,結果還是不知道從哪裡開始入手。我想對於我們這些程式設計的孩子們來說,要想學習一個一個新的東西,最難的不是說我應該怎麼去學,而是應該是環境的搭建,對於搭建環境我想對與spring來說網上
spring學習筆記——spring Hello world 普通java專案版 分析類的載入與裝配
上一篇展示了spring的web版hello world,本篇來一個普通java專案中運用spring的demo,裡面有對singleton與prototype的討論,可以很清晰的看到spring對實體的注入策略。 因為是個demo,後來看工廠後處理器以及bean前、bea
Python Flask學習筆記之Hello World
bubuko 筆記 out 混亂 name html ctrl 激活 pro Python Flask學習筆記之Hello World 安裝virtualenv,配置Flask開發環境 virtualenv 虛擬環境是Python解釋器的一個私有副本,在這個環境中可以安裝私
python_ 學習筆記(hello world)
f2c closed false == div end class spl spa python中的循環語句 循環語句均可以尾隨一個else語句塊,該塊再條件為false後執行一次 如果使用break跳出則不執行。 for it in [1,2,3,4]:
Go語言學習筆記(1)——Hello World!
都是 jet 多條語句 Golan 包括 軟件 輸入 大寫字母 引入 第一個go程序——HelloWorld.go 源碼 : package mainimport "fmt" // import ("fmt") f
Android學習筆記2:Hello World程式解析
《第一行程式碼——Android》郭霖著 Android Studio入門到精通 Android Studio與Eclipse的一些不同 Android Studio是基於IDEA的,IDEA 全稱IntelliJ IDEA,是java語言開發的整合環境。IDEA
學習筆記2
建議 coo line 長度 cape 發展 div+css 加載 不兼容 雙標簽: <html><head><title><body><table><tr><td><span>
Jmeter學習筆記2-原件作用域與執行順序
校驗 height sse proc tro 有效 收集 技術分享 控制 1.元件的作用域 (1)配置元件(config elements):會影響其作用範圍內的所有元件。 (2)前置處理程序(per-processors):在其作用範圍內的每一個sampler元件之
python學習筆記2:字符串
nbsp 大小 alpha .com format 大小寫 fin 判斷大小 key python學習筆記2:字符串 總結:字符串是不可變變量,不能通過下標修改其值 字符串的方法都不會改變字符串原來的值,而是新生成一個字符串 一、3種寫法——單引號,雙引號,三引號
java 學習筆記2 面向對象(上)
awr ges abs nal mage 有效 面向對象 ima col 類和對象 類是某一批對象的抽象,可以把類理解成某種概念。對象是一個具體存在的實體。類和對象是面向對象的核心。 類定義的是多個實例的特征,類不是具體存在,實例才是具體存在。 定義類(class)的語法:
Git學習筆記2——Git版本庫的創建
文件添加 不但 提交 linu 記錄 例子 blog 所有 out 創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目錄: $ cd s: $ cd Git_Learing $ pwd s/Git_Learning pwd命令用於顯示當前目錄。在我的wind
Hadoop 學習筆記 (2) -- 關於MapReduce
規模 pre 分析 bsp 學習筆記 reduce 數據中心 階段 圖例 1. MapReduce 定義: 是一種可用於數據處理的編程的模型 優勢: MapReduce 本質上是並行運行的,因此可以將大規模的數據分析任務,分發給任何一個擁有足夠多機器