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+编译环境的步骤,并成功编译运行了
·
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
上篇讲的是 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
更多推荐
已为社区贡献1条内容
所有评论(0)