<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    何以解憂?唯有Java

    其實程序員也懂得浪漫!
    posts - 90, comments - 637, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Linux 下用NetBeans開發GTK 程序

    Posted on 2008-10-19 12:30 guanminglin@gmail.com 閱讀(31889) 評論(10)  編輯  收藏 所屬分類: NetBeans
    用了Linux 突然間想寫點C的程序,大家都說GTK 好用,所以就拿GTK 作實驗。
    第一步:搭建開發環境
    1.gcc和java,這個應該不難,一般的發行版里都有gcc,Java可以到www.sun.com下載,安裝配置,google 一下到處都是。
    2.到www.netbeans.org 下載netbeans IDE ,有專門的C++ 版。
    3.Gtk+可以直接安裝libgtk2.0-dev軟件包,也可以從http://www.gtk.org/下載源碼,編譯安裝。可能需要其他依賴的軟件包如下:
    • pkg-config
    • GNU make
    • JPEG, PNG and TIFF image libraries
    • FreeType
    • fontconfig
    • GNU libiconv library
    • GNU gettext
    • GLib
    • Pango
    • ATK
    • GTK+
    第二步:配置NetBeans
    如果前三項都做完了,那么我們可以開始配置netbeans 了
    1.啟動netbeans ,打開工具->選項->C/C++


    還有需要在項目屬性里添加如下路徑:



    在代碼輔助里面添加GTK2.0的頭文件位置:/usr/include/gtk-2.0
    這是為了寫代碼的時候方便提示例如:

    在沒有添加之前需要這樣寫:
    #include<gtk-2.0/gtk/gtk.h>
    添加之后就可以這樣寫:
    #include<gtk/gtk.h>

    接著我們就可以寫代碼了,這里我copy了一下網上的代碼:
    #include<gtk/gtk.h>
    /* This is a callback function. The data arguments are ignored
     * in this example. More on callbacks below. 
    */
    static void hello( GtkWidget *widget,
                       gpointer   data )
    {
        g_print (
    "Hello World\n");
    }

    static gboolean 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");

        
    /* Change TRUE to FALSE and the main window will be destroyed with
         * a "delete_event". 
    */

        
    return TRUE;
    }

    /* Another callback */
    static void destroy( GtkWidget *widget,
                         gpointer   data )
    {
        gtk_main_quit ();
    }

    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 */
        window 
    = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        
        
    /* When the window is given the "delete_event" signal (this is given
         * by the window manager, usually by the "close" option, or on the
         * titlebar), we ask it to call the 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 (G_OBJECT (window), 
    "delete_event",
                  G_CALLBACK (delete_event), NULL);
        
        
    /* Here we connect the "destroy" event to a signal handler.  
         * This event occurs when we call gtk_widget_destroy() on the window,
         * or if we return FALSE in the "delete_event" callback. 
    */
        g_signal_connect (G_OBJECT (window), 
    "destroy",
                  G_CALLBACK (destroy), NULL);
        
        
    /* Sets the border width of the window. */
        gtk_container_set_border_width (GTK_CONTAINER (window), 
    50);
        
        
    /* 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 hello() passing it NULL as its argument.  The hello()
         * function is defined above. 
    */
        g_signal_connect (G_OBJECT (button), 
    "clicked",
                  G_CALLBACK (hello), NULL);
        
        
    /* This will cause the window to be destroyed by calling
         * gtk_widget_destroy(window) when "clicked".  Again, the destroy
         * signal could come from here, or the window manager. 
    */
        g_signal_connect_swapped (G_OBJECT (button), 
    "clicked",
                      G_CALLBACK (gtk_widget_destroy),
                                  G_OBJECT (window));
        
        
    /* This packs the button into the window (a gtk container). */
        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
         * mouse event). 
    */
        gtk_main ();
         
    return 0;
    }


    NetBeans 的代碼提示:(借用別人的圖片)


    寫完代碼后試著運行項目,你會發現出錯了。解決辦法:
    在項目的屬性C編譯器“命令行->其他選項”選項里添加一行命令行參數

     `pkg-config gtk+-2.0 --cflags --libs`

    他的意思是把運行gtk 的依賴庫包含進來。

    注意:這兩個 符號:` `  不是我們常用的那個單引號,而是Tab 鍵上面一個鍵的符號。

    最后的結果截圖:


    做完以上工作以后再次運行項目,是不是成功了!
    運行結果:




    順便推薦幾篇blog 給大家

    http://blog.chinaunix.net/u1/48222/showart_393772.html

    強烈推薦這篇博客,雖然他是英文的
    http://zetcode.com/articles/netbeanscdevelopment/




    評論

    # netbeans用nimbus外觀  回復  更多評論   

    2008-10-22 19:43 by 小暉
    改了之后,一切都正常,但是,項目,文件,服務 里面的各個項目的名字的默認顏色都變成了白色,和背景色一樣,都看不見了,請問一下有辦法解決嗎??

    # re: Linux 下用NetBeans開發GTK 程序  回復  更多評論   

    2008-10-22 20:09 by 日月雨林@gmail.com
    @小暉
    這個我也沒有辦法,這個可能是nimbus 在linux 下的bug ,在windows 下就很正常。不建議你在linux 下使用nimbus 外觀。用gtk 的外觀比較好。

    # re: Linux 下用NetBeans開發GTK 程序  回復  更多評論   

    2008-10-23 10:36 by 小暉
    謝謝,我的是windows 下這個問題,項目里名字的顏色和背景色一樣

    # re: Linux 下用NetBeans開發GTK 程序  回復  更多評論   

    2008-10-23 18:17 by 日月雨林@gmail.com
    @小暉
    我的好像沒有這個問題?我回去在看看!我一般都是用他的默認外觀!

    # re: Linux 下用NetBeans開發GTK 程序  回復  更多評論   

    2008-10-26 20:41 by 小暉
    6.5 沒有問題,6.1上的問題,謝謝

    # re: Linux 下用NetBeans開發GTK 程序  回復  更多評論   

    2008-11-02 21:57 by sleepsaint
    請問你那張NetBeans 的代碼提示:(借用別人的圖片)是怎么弄出來的,我的Netbeans在不按"."或者"->"的情況下是出不來提示列表的,就因為這點煩死了。按自動完成只能在幾個已經出現過的單詞里面切換。

    # re: Linux 下用NetBeans開發GTK 程序  回復  更多評論   

    2008-11-02 22:12 by sleepsaint
    被eclipse類似晃點了,我改了快捷鍵為eclipse類似,然后按Alt+/,然后就只能在幾個詞之間切換。又看了一下快捷鍵映射,自動完成還是ctrl+space,Alt+/是下一個匹配詞,狂暈,被晃點了這么久。

    # re: Linux 下用NetBeans開發GTK 程序  回復  更多評論   

    2008-11-02 22:13 by 日月雨林@gmail.com
    @sleepsaint
    你可以試一試 CTRL+\ 快捷鍵!或者 CTRL + Space 鍵(這個快捷鍵基本上都被輸入法占用了)

    # re: Linux 下用NetBeans開發GTK 程序  回復  更多評論   

    2008-11-14 09:14 by fanfan
    界面美化的很難看啊

    # re: Linux 下用NetBeans開發GTK 程序  回復  更多評論   

    2008-11-14 09:36 by 日月雨林@gmail.com
    @fanfan
    更本沒有美化啊!這是netbeans 在Linux 下的默認外觀阿。在不同的Liunx 下會有一些差別。
    其實我更喜歡 metal 的外光,占用資源很小。
    主站蜘蛛池模板: 亚洲三区在线观看无套内射| 亚洲第一黄片大全| 久久青青草原亚洲av无码app| 四虎国产精品成人免费久久 | 亚洲精品97久久中文字幕无码| 亚洲精品无码中文久久字幕| 毛片免费vip会员在线看| 亚洲精品中文字幕无乱码麻豆| 亚洲成人免费在线观看| 亚洲一区二区三区四区在线观看| 无码人妻精品中文字幕免费| 亚洲成在人天堂一区二区| 一区二区免费视频| 亚洲国产成+人+综合| 美女裸身网站免费看免费网站| 亚洲男人天堂2018av| 好吊妞视频免费视频| WWW亚洲色大成网络.COM| 亚洲AV无码乱码精品国产| 在线免费视频你懂的| 亚洲成a人片在线观看无码| 91av在线免费视频| 亚洲色欲色欲www在线播放| 免费A级毛片在线播放不收费| 中美日韩在线网免费毛片视频| 亚洲精品国产字幕久久不卡| 少妇无码一区二区三区免费| 亚洲男人天堂2022| 国产亚洲成人久久| 1000部国产成人免费视频| 欧美亚洲精品一区二区| 亚洲情XO亚洲色XO无码| 7x7x7x免费在线观看| 国内成人精品亚洲日本语音 | 色播亚洲视频在线观看| 性生交片免费无码看人| 一级做a爰性色毛片免费| 久久精品国产亚洲av高清漫画| 欧洲精品免费一区二区三区| 免费在线看黄网站| 亚洲国产欧美国产综合一区|