|
使用 Glade-2 在 http://www.groad.net/bbs/read.php?tid-1777.html 这里已经尝试过。现在使用 Glade3 来创建一个工程,然后再用 libglade 函数库进行代码联编,使之生成一个可以运行的程序。libglade 函数库应用基础在:http://www.groad.net/bbs/read.php?tid-1790.html
最后生成的程序界面如下图:
![]()
上图中,上面的是一个标签,下面是按钮构件。构件中的标签在主程序中使用相应的函数生成,“退出”按钮用"gtk_main_quit() 绑定。
这里,用 Glade3 构造界面,但又需要用 libglade 函数库进行联编时,需要注意初始时的选择,如下图所示:
![]()
上面,选择了红框里的 Libglade,如果按照默认,则虽然生成程序,但是会运行失败。为了兼容我机子上的已安装的 Gladd2 2.12 版本,所以选择了 2.12 。
程序代码如下:
#include <gtk-2.0/gtk/gtk.h>
#include <glib-2.0/glib.h>
#include <libglade-2.0/glade/glade.h> //注意库的包含
int main (int argc, char *argv[])
{
gtk_init (&argc, &argv);
GladeXML *ui; //声明 GladeXML 类型变量
ui = glade_xml_new ("glade.glade", NULL, NULL);
GtkWidget *window;
window = glade_xml_get_widget (ui, "MainWindow"); //从 GladeXML 对象获得 GtkWidget 界面构件
GtkWidget *label;
label = glade_xml_get_widget (ui, "label");
gtk_label_set_label (GTK_LABEL(label), "Hello World!"); //修改界面构件属性
gtk_widget_show_all (window); //显示 window 内的所有构件
glade_xml_signal_autoconnect (ui); //连接 GldeXML 对象所有已定义信号
gtk_main();
return 0;
}
编译:gcc -o combox combox.c `pkg-config --cflags --libs glib-2.0 gtk+-2.0 libglade-2.0`
注意:
通过 C 语言源代码文件编译的可执行文件与 Glade 项目文件是分离的,如果删除了 Glade 项目文件或改变其路径,那么可执行文件也无法启动图形界面,并且造成执行错误。如果在 Glade 中修改了项目文件,只要不影响可执行文件的调用,那么无需重新修改和编译源代码。例如在 Glade 中只改变了窗体构件的标题属性,那么再次运行可执行文件时,将显示新修改的窗体标题。
|
|