鱼C论坛

 找回密码
 立即注册
查看: 5351|回复: 2

[技术交流] C语言GUI程序设计-GTK图文系列-界面设计器Glade

[复制链接]
发表于 2014-12-13 09:48:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 G0398 于 2014-12-13 09:48 编辑

这一讲来讲解GTK界面设计器Glade的简单使用。

我们先下载安装这个界面设计器,目前最新版版本为3.8.5,下载地址如下:
http://ftp.gnome.org/pub/GNOME/binaries/win32/glade/3.8/glade-3-8-5-installer.exe
下载安装完成后,运行Glade,显示如下的界面:
gtk_ui_glade.png

将主界面分为四个关键区域,其中区域一为部件库,在这里可以选择常用的小部件,区域二为主设计区域,在这里设计所需GUI,区域三为部件结构树,用来显示各个部件之间的层级关系,区域四为属性设置区域,用来设置当前选中部件的各个属性。

这里我们画一个简单的界面,里面放一个GtFixed(绝对定位布局),在GtkFixed里面放一个按钮,点击按钮输出 click 。
界面布局:
gtk_ui_sample.png
界面部件树:
gtk_ui_widget_tree.png
部件属性:
gtk_ui_property.png
这里没有改部件名称都是默认命名规则,window1,fixed1,button1,添加了按钮的点击回调函数 on_button1_clicked。

然后保存这个UI文件为1.glade。

gtk_ui_define.png
用记事本打开1.glade发现它是一个XML格式的文件,是的,现在大多程序的布局文件都是XML文件,比如android的,或微软的XAML布局。

接下来就是在程序里解析这个XMl格式的布局文件了。

例程代码如下:
#include <gtk\gtk.h>

G_MODULE_EXPORT void on_button1_clicked(GtkButton *button,gpointer user_data)
{
    g_print("click!\n");
}

int main(int argc, char *argv[])
{
    const gchar *uifile = "1.glade";
    GtkBuilder *builder;
    GError *err = NULL;
    GtkWidget *window;

    gtk_init(&argc, &argv);
    builder = gtk_builder_new();
    if(gtk_builder_add_from_file(builder, uifile, &err))
    {
        window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
        gtk_builder_connect_signals(builder, NULL);
        g_object_unref(G_OBJECT(builder));
        if(window)
        {
            gtk_widget_show_all(window);
            gtk_main();
        }
    }

    return 0;
}
先通过gtk_builder_new函数创建一个GtkBuilder对象,然后通过gtk_builder_add_from_file函数解析1.glade文件,解析完成后builder对象里就有整个界面布局的对象了,通过gtk_builder_get_object函数拿到所需的对象。比如这里的window1窗口对象。
然后注册界面中的所有信号回调函数,gtk_builder_connect_signals函数用来注册所有信号。
然后通过g_object_unref函数释放不再使用的builder对象,最后显示窗口部件(gtk_widget_show_all),调用主消息循环(gtk_main)。

Notice:
这里需要注意的是要注册的信号回调函数需要用 G_MODULE_EXPORT 定义要不就会提示没有找到信号处理函数

glade的使用就说这么多,下一节讲解GTK中的主题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-16 11:34:36 | 显示全部楼层
支持楼主,。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-1 23:32:35 From FishC Mobile | 显示全部楼层
想问下楼主 glade可以和c语言配合 弄一个竖型显示窗口吗  还是换语言比较好  或者设计一个窗口内容自己可以选择的  有什么软件或者程序推荐吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 22:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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