Linux/Unix C/C++编程 GTK+ GUI编程 libGlade (图)

Linux/Unix C/C++编程 GUI编程 libGlade

    上篇讲的是 C/C++ IDE编程,是此篇前提.
    GTK+是遵循LGPL协议的一个优秀的GUI类库.基于C语言开发,是GNOME的基础,也是Linux下 GUI程序的首选.同时,GTK+也是一个跨平台的GUI库,本文基于我的实践,介绍了Linux下用eclipse/CDT 来搭建GTK+编译环境的步骤,并成功编译运行了GTK+的"hello world"程序! 希望对那些想在Linux下开发GTK+程序的朋友能有所帮助.
    开发前,先确认系统里安装有 gtk+-2.0,libglade-2.0,和Glade3.0界面设计软件
    如图:1

    首先我们打开Glade3.0,建立一个新窗口
    如图:2

    然后我们把一个按钮"丢"上去,并给按钮一个signal handle "on_button1_button_press_event" 保存为"helloworld"退出
    如图:3

    打开helloworld.glade文件我们会看到如下代码:
==========helloworld.glade
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--*- mode: xml -*-->
<glade-interface>
  <widget class="GtkWindow" id="window">
    <property name="visible">True</property>
    <property name="title" translatable="yes">Hello World Window!</property>
    <property name="default_width">500</property>
    <property name="default_height">400</property>
    <child>
      <widget class="GtkButton" id="button1">
        <property name="visible">True</property>
        <property name="label" translatable="yes">button</property>
        <signal name="button_press_event" handler="on_button1_button_press_event"/>
      </widget>
    </child>
  </widget>
</glade-interface>

====================

    然后我们建立一个C Project,取名为helloGtk
    如图:4

====================下面的步骤是重点,轻注意
    点击刚建立好的Project-Preference-C/C++ Build-Tool Setting-GCC Complier,在文本框后面添加`pkg-config  --cflags gtk+-2.0` `pkg-config  --cflags libglade-2.0`
    如图:5

    点击GCC Linker-Miscellaneous,添加两个参数`pkg-config  --libs gtk+-2.0` `pkg-config  --libs libglade-2.0`
    如图:6

    点击GCC Linker,在Connand Line 中间插入 -export -dynamic(就是这个地方害我找了一天的资料,网上很多人出现这个问题,就是没答案...最后还是手动编译成功后才找到原来是这里的原因,郁闷-_-!)
    如图:7

    然后建立一个main.c的源文件,并把刚刚建好的helloworld.glade考入src文件夹,结构如下
    如图:8

==========main.c
#include <gtk/gtk.h>
#include <glade/glade.h>


#define GLADE_FILE "/root/workspace/HelloGtk/src/helloworld.glade"

void on_button1_button_press_event(GtkWidget *widget, gpointer user_data)
{
    //test
    g_print("button1./n");
}


int main (int argc, char *argv[])
{
    GladeXML *xml;

    gtk_init(&argc, &argv);
    /* load the interface */
    xml = glade_xml_new(GLADE_FILE, NULL, NULL);

    /* connect the signals in the interface */
    glade_xml_signal_autoconnect(xml);
  
    /* start the event loop */
    gtk_main();

    return 0;
}

====================
    然后编译,运行,点击按钮,控制台出现提示
    如图:9
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值