桌面应用开发GTK3 Glade (C语言)

Tue 23 September 2025

桌面应用开发GTK3 Glade (C语言) 目录 Github 教程 简介 可视化设计 生成XML描述文件 与多种编程语言兼容 与IDE集成 安装 Glade 示例 demo.glade demo.c Github https://github.com/GNOME/gtk https://github.com/GNOME/glade git clone https://github.com/GNOME/glade.git 教程 https://developer.gnome.org/ 简介 Glade是一个用于创建GTK图形用户界面的用户界面构建器。它允许开发者通过可视化方式设计和布局GUI元素,而不必手动编写代码。Glade生成XML格式的描述文件,描述了用户界面的结构和属性。然后,这个XML文件可以由程序加载和解释,从而创建用户界面。 可视化设计 Glade提供了一个直观的图形用户界面,允许用户通过拖放方式设计和布局界面元素,无需手动编写代码。 生成XML描述文件 设计完成后,Glade会生成一个XML格式的描述文件,其中包含了用户界面的结构和属性信息。 与多种编程语言兼容 由于生成的描述文件是基于XML的,因此可以与多种编程语言一起使用。GTK支持多种编程语言,包括C、C++、Python等。 与IDE集成 Glade可以与多个集成开发环境(IDE)一起使用,例如GNOME Builder,以便更方便地进行开发和调试。 安装 Glade

目前版本支持gtk+3

brew install glade glade --version

启动

glade image

gtk+3 安装路径

/usr/local/Cellar/gtk+3/3.24.41

brew info gtk+3

GTK+3版本号

pkg-config --modversion gtk+-3.0 示例 image

demo.glade


400 200 False demo True False vertical button True True True 10 10 10 10 False True 0 True False 10 10 10 10 0 1 item1 item2 item3 item4 False True 1 True True 10 10 10 10 False True 2

demo.c

include

static void on_button_clicked (GtkButton *button, gpointer user_data) { g_print ("Hello World\n"); }

static void on_combobox_changed (GtkComboBox combobox, gpointer user_data) { gint active_item = gtk_combo_box_get_active (combobox); const gchar active_id = gtk_combo_box_get_active_id (GTK_COMBO_BOX (combobox)); g_print ("Selected item: %d, active_id: %s\n", active_item, active_id); }

static void on_entry_changed (GtkEntry entry, gpointer user_data) { const gchar text = gtk_entry_get_text (entry); g_print ("Entry Text: %s\n", text); }

static void on_entry_activate (GtkEntry entry, gpointer user_data) { const gchar text = gtk_entry_get_text (entry); g_print ("Entry Text: %s\n", text); }

int main (int argc, char argv) { GtkBuilder builder = gtk_builder_new (); GtkWidget window; GtkWidget button; GtkWidget combobox; GtkWidget *entry;

gtk_init (&argc, &argv); gtk_builder_add_from_file (builder, "demo.glade", NULL);

window = GTK_WIDGET (gtk_builder_get_object (builder, "window")); button = GTK_WIDGET (gtk_builder_get_object (builder, "button")); combobox = GTK_WIDGET (gtk_builder_get_object (builder, "combobox")); entry = GTK_WIDGET (gtk_builder_get_object (builder, "entry"));

gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);

g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (button, "clicked", G_CALLBACK (on_button_clicked), NULL); g_signal_connect (combobox, "changed", G_CALLBACK (on_combobox_changed), NULL); g_signal_connect (entry, "changed", G_CALLBACK (on_entry_changed), NULL); g_signal_connect (entry, "activate", G_CALLBACK (on_entry_activate), NULL);

g_object_unref (G_OBJECT (builder)); gtk_widget_show (window);

gtk_main (); return 0; } gcc $(pkg-config --cflags gtk+-3.0) -o demo demo.c $(pkg-config --libs gtk+-3.0)

gcc -o demo demo.c pkg-config --cflags --libs gtk+-3.0

Category: 编程c