programming/c
gtk3-glademodified | Saturday 28 June 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…
教程
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
brew install glade
glade –version
glade
image
brew info gtk+3
pkg-config –modversion gtk+-3.0
示例
image
demo.glade
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