曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5574|回复: 0
打印 上一主题 下一主题

使用 Glade3 与 libglade 创建程序

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2010-4-16 19:34:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用 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 中只改变了窗体构件的标题属性,那么再次运行可执行文件时,将显示新修改的窗体标题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-8 08:18 , Processed in 0.077859 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表