<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 下面來介紹GTK編程入門,你的第一個程序hellowoeld。直接通過程序來講解吧。 ~~~ /*File:helloworld.c *Date:2013-11-23 *Author:sjin *Mail:413977243@qq.com */ /*my first test program*/ #include <gtk/gtk.h> /* 這是一個回調函數。data 參數在本示例中被忽略。 * 后面有更多的回調函數示例。*/ void hello( GtkWidget *widget,gpointer data ) { g_print ("Hello World\n"); } gint delete_event( GtkWidget *widget,GdkEvent *event,gpointer data ) { /* 如果你的 "delete_event" 信號處理函數返回 FALSE,GTK 會發出 "destroy" 信號。 * 返回 TRUE,你不希望關閉窗口。 * 當你想彈出“你確定要退出嗎?”對話框時它很有用。*/ g_print ("delete event occurred\n"); /* 改 TRUE 為 FALSE 程序會關閉,關閉時調用destroy()。*/ return TRUE; } /* 另一個回調函數 */ void destroy( GtkWidget *widget,gpointer data ) { gtk_main_quit (); } int main( int argc, char *argv[] ) { /* GtkWidget 是構件的存儲類型 */ GtkWidget *window; GtkWidget *button; /* 這個函數在所有的 GTK 程序都要調用。參數由命令行中解析出來并且送到該程序中*/ gtk_init (&argc, &argv); /* 創建一個新窗口 */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /*設置窗口標題*/ gtk_window_set_title(GTK_WINDOW(window),"My first program helloworld!"); /* 當窗口收到 "delete_event" 信號 (這個信號由窗口管理器發出,通常是“關閉” * 選項或是標題欄上的關閉按鈕發出的),我們讓它調用在前面定義的 delete_event() 函數。 * 傳給回調函數的 data 參數值是 NULL,它會被回調函數忽略。*/ g_signal_connect (G_OBJECT (window), "delete_event",G_CALLBACK (delete_event), NULL); /* 在這里我們連接 "destroy" 事件到一個信號處理函數。 * 對這個窗口調用 gtk_widget_destroy() 函數或在 "delete_event" 回調函數中返回 FALSE 值 * 都會觸發這個事件。*/ g_signal_connect (G_OBJECT (window), "destroy",G_CALLBACK (destroy), NULL); /* 設置窗口邊框的寬度。*/ gtk_container_set_border_width (GTK_CONTAINER (window), 150); /* 創建一個標簽為 "Hello World" 的新按鈕。*/ button = gtk_button_new_with_label ("Hello World"); /* 當按鈕收到 "clicked" 信號時會調用 hello() 函數,并將NULL傳給 * 它作為參數。hello() 函數在前面定義了。*/ g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (hello), NULL); /* 當點擊按鈕時,會通過調用 gtk_widget_destroy(window) 來關閉窗口。 * "destroy" 信號會從這里或從窗口管理器發出。*/ g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (gtk_widget_destroy),window); /* 把按鈕放入窗口 (一個 gtk 容器) 中。*/ gtk_container_add (GTK_CONTAINER (window), button); /* 最后一步是顯示新創建的按鈕和窗口 */ gtk_widget_show (button); gtk_widget_show (window); /* 所有的 GTK 程序必須有一個 gtk_main() 函數。程序運行停在這里 * 等待事件 (如鍵盤事件或鼠標事件) 的發生。*/ gtk_main (); return 0; } ~~~ 編譯 gcc test.c `pkg-config --cflags --libs gtk+-2.0`(以后編譯都參照這個樣子,以后將不再具體說明) 運行程序將出現下面的窗口,單擊button窗口將被關閉 ![](https://box.kancloud.cn/2016-08-24_57bd77967dd88.jpg) 下面是改進版的helloworld ~~~ /*File:helloworld2.c *Date:2013-11-17 *Author:sjin *Mail:413977243@qq.com */ #include <gtk/gtk.h> /*改進的回調函數,傳遞到該函數的數據將會被打印到標準輸出*/ void callback(GtkWidget *widget,gpointer data) { g_print("Hello again-%s was pressed\n",(gchar*) data); } /*關閉窗口的函數*/ void destroy(GtkWidget *widget,gpointer data) { g_print("退出hello world!\n"); gtk_main_quit(); } int main(int argc,char *argv[]) { GtkWidget *window; GtkWidget *button; GtkWidget *box1; /*函數gtk_init()會在每個GTK的應用程序中調用。 * 該函數設定默認的視頻和顏色默認參數,接下來會調用函數 * gdk_init()該函數初始化要使用的庫,設定默認的信號處理 *檢查傳遞到程序的命令行參數 * */ gtk_init(&argc,&argv); //下面兩行創建并顯示窗口。創建一個200*200的窗口。 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); /*設置窗口標題*/ gtk_window_set_title(GTK_WINDOW(window),"Helloworld2.c test!"); g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(destroy),NULL); /*設置窗口邊框的寬度*/ gtk_container_set_border_width(GTK_CONTAINER(window),80); /*創建一個組裝盒 *我們看不見它,用來排列構建的工具 * */ box1 = gtk_hbox_new(FALSE,0); /*把組裝盒box1放到主窗口中*/ gtk_container_add(GTK_CONTAINER(window),box1); /*創建一個標簽為“歡迎”的按鈕*/ button = gtk_button_new_with_label("歡迎"); /*當按下歡迎按鈕時,我們調用 callback函數,會打印出我們傳遞的參數*/ g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(callback),"歡迎大家來到我的博客學習!"); /*我們將button 按鈕放入組裝盒中*/ gtk_box_pack_start(GTK_BOX(box1),button,TRUE,TRUE,0); /*歡迎按鈕設置成功,別忘了寫下個函數來顯示它*/ gtk_widget_show(button); /*創建第二個按鈕*/ button = gtk_button_new_with_label("說明"); g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(callback),"GTK編程入門學習!"); gtk_box_pack_start(GTK_BOX(box1),button,TRUE,TRUE,0); gtk_widget_show(button); /*創建一個退出按鈕*/ button = gtk_button_new_with_label("退出"); /*當點擊退出按鈕時,會觸發gtk_widet_destroy來關閉窗口,destroy信號從這里發出 * 會觸發destroy函數。*/ g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destroy),NULL); g_signal_connect_swapped(G_OBJECT(button),"clicked",G_CALLBACK(gtk_widget_destroy),window); gtk_box_pack_start(GTK_BOX(box1),button,TRUE,TRUE,0); gtk_widget_show(button); gtk_widget_show(box1); gtk_widget_show(window); //進入主循環 gtk_main(); return 0; } ~~~ ### 運行程序,會彈出下面的窗口 ![](https://box.kancloud.cn/2016-08-24_57bd77969010e.jpg) ### 依次點擊歡迎、說明、退出按鈕,會打印下面的信息 ~~~ Hello again-歡迎大家來到我的博客學習! was pressed Hello again-GTK編程入門學習! was pressed 退出hello world! ~~~ 退出方式有2種,一種是點擊窗口上的關閉窗,另一種就是點擊按鈕退出 參考資料: [http://download.csdn.net/detail/jsh13417/6567043](http://download.csdn.net/detail/jsh13417/6567043) [GTK+2.0 中的容器控件與布局技巧](http://www.ibm.com/developerworks/cn/linux/l-gtk/part1/index.html) [GTK+中的插件](http://www.ibm.com/developerworks/cn/linux/l-gtkplgin/index.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看