Glade是一个用于创建GTK图形用户界面的用户界面构建器。它允许开发者通过可视化方式设计和布局GUI元素,而不必手动编写代码。Glade生成XML格式的描述文件,描述了用户界面的结构和属性。然后,这个XML文件可以由程序加载和解释,从而创建用户界面。
在Ubuntu中安装Glade
- sudo apt-get install glade libgtk-3-dev
安装完成后可以在应用列表中看到这样的图标
打开后界面是这样的
先点击左上角的新建按钮,界面会变成这样
先创建一个窗口,在右边修改ID
切换到signals,在destroy这里填上窗口关闭时要调用的方法名称
注意:这里并不会真正的绑定到指定函数还需要在代码中绑定,所以也可以不填,这里只是帮忙了解对应的控件都有哪些方法可用
接下来添加一个输入框和按钮,来实现一个点击按钮后将输入框中的文字输出到控制台的窗口应用
代码实现
- #include <gtk/gtk.h>
- GtkWidget *entry;
- void on_btn_clicked(GtkWidget *widget,gpointer data)
- {
- const gchar *text = gtk_entry_get_text(GTK_ENTRY(entry));
- g_print ("btn clicked\n");
- g_print ("%s\n",text);
- }
- void on_WindowMain_destroy(GtkWidget *widget,gpointer data)
- {
- g_print ("closed\n");
- gtk_main_quit();//必须要加,不然程序不能真正关闭
- }
- int main (int argc, char **argv)
- {
- GtkBuilder *builder;
- GtkWidget *window;
- GtkWidget *btn;
- gtk_init(&argc, &argv); // gtk 初始化
- builder = gtk_builder_new();// 创建新的builder 对象
- gtk_builder_add_from_file(builder, "test.glade", NULL);
- //组件实例化,注意gtk_builder_get_object中填写的名称要和在Glade中设置的ID一致
- window = GTK_WIDGET(gtk_builder_get_object(builder,"WindowMain")); // gtk 窗口实例化
- btn = GTK_WIDGET(gtk_builder_get_object(builder,"btn"));
- entry = GTK_WIDGET(gtk_builder_get_object(builder,"entry"));
- //组件事件绑定
- g_signal_connect (btn, "clicked", G_CALLBACK (on_btn_clicked), builder);
- g_signal_connect (window, "destroy", G_CALLBACK (on_WindowMain_destroy), builder);
- g_object_unref (G_OBJECT (builder));
- gtk_widget_show(window); // 显示windows 窗口包含的所有gtk 组件
- gtk_main(); //gtk 主事件循环开启
- return 0;
- }
运行效果
需要注意的是程序会在开始运行时加载.glade文件,所以生成的.glade文件要和编译出的可执行文件在同一目录,后边如果只是修改窗口布局(如控件大小、位置、颜色等)可以只修改.glade文件而不需要重新编译程序
|